Python学习17:异常处理(一)

来源:互联网 发布:婚姻记录查询软件 编辑:程序博客网 时间:2024/06/07 20:46
1、try ... except ...

我们可以使用try..except语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在except-块中。

当试图读入一个用户输入时,用户按下了Ctrl + d,Python会跑出异常

 

>>> try:s = input('请输入一个字符串:')except EOFError:print('\nEOFError异常处理:用户输入过程产生异常')


 

当以只读的方式打开一个不存在文件的时候会跑出IOError异常:因此:

#尝试以只读的方式打开一个不存在的文件,并进行异常处理try:    fp = open('file.txt','r')except IOError:    print("异常处理:打开文件file.txt失败")


 

#尝试以写入的方式打开一个不存在的文件,并进行异常处理try:    fp = open('file.txt','w')    #打印一个没有定义的变量,跑出NameError异常    print(name)     except IOError:    print("异常处理:打开文件file.txt失败")except NameError:    print('异常处理:变量name没有定义')    #在捕获的异常中处理    name = 'jiezhj'    #写入一行     fp.write(name + '\n')    fp.write(name)    fp.write(name)    fp.write(name)    fp.close()

 

 

异常的抛出机制:

1、如果在运行时发生异常,解释器会查找相应的处理语句(称为handler.

2、要是在当前函数里没有找到的话,它会将异常传递给上层的调用函数,看看那里能不能处理。

3、如果在最外层(全局“main”)还是没有找到的话,解释器就会退出,同时打印出traceback以便让用户找到错误产生的原因。

#FileName : except.py#定义一个方法用于打开文件def func(FileName):    try:        #以只读的方式打开文件FileName        fp = open(FileName,'r')    except NameError:        print('异常处理:函数内部异常')    except IOError:        print('func异常处理:文件hello.txt打开错误!')#定义一个方法用于调用方法funcdef callFunc():    try:        #传递文件名        func('hello.txt')    except IOError:        print('callFunc异常处理:文件hello.txt打开错误!')        callFunc() 


异常被func方法中的except截获:

 

将方法func中的异常处理注释掉之后,异常会向调用方法func的函数中抛出

#FileName : except.py#定义一个方法用于打开文件def func(FileName):    try:        #以只读的方式打开文件FileName        fp = open(FileName,'r')    except NameError:        print('异常处理:函数内部异常')    #将fun中的异常处理注释掉#    except IOError:#        print('func异常处理:文件hello.txt打开错误!')#定义一个方法用于调用方法funcdef callFunc():    try:        #传递文件名        func('hello.txt')    except IOError:        print('callFunc异常处理:文件hello.txt打开错误!')        callFunc() 


 让try..catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。

 

 

 

0 0
原创粉丝点击