异常处理

一、捕捉异常:

def calc(a, b):     try:  # 捕捉异常         res = a / b     except ZeroDivisionError as e:         return '除数不能为0!'     except KeyError as e:  # 捕捉KeyError这个异常,当然这段代码没用到字典,所以不会有keyerror这个错误,我只是举个例子         return 'keyerror错误'     except Exception as e:  # 这个是捕捉所有的异常,不管你有什么异常都可以捕捉到         print('其他异常')         return e  #返回错误信息     else:  #这个else和上面的try对应的,也就是不出异常的话走这里         print('没有出异常')         return res     finally:  #这个finally是不管这个段代码有没有出异常都走它         print('出没出异常都走我这里')   print(calc(5, 0))  #出除数异常了,会返回除数不能为0!和执行finally里面的代码   print(calc(5, 1))  #这个没有出异常,就会走else里面的东西,返回结果,也会执行执行finally里面的代码   print(calc(5, 's'))  #这个也走异常了,除数是字符串,肯定不能除,就走那个捕捉所有异常的代码了,也会执行执行finally里面的代码

二、常见的异常信息:

AttributeError: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x   IOError:输入/输出异常,一般是无法打开文件   ImportError: 无法导入模块或包,一般是路径问题或名称错误   IndentationError:代码没有正确对齐,属于语法错误   IndexError:下标索引超出序列边界,比如x只有三个元素,却试图访问x[3]   KeyError:试图访问字典里不存在的键   KeyboardInterrupt:Ctrl+C被按下   NameError:使用一个还未被赋予对象的变量   SyntaxError: 语法错误   TypeError: 传入对象类型与要求的不符   UnboundLocalError:试图访问一个还未被设置的局部变量,一般是由于在代码块外部还有另一个同名变量   ValueError: 传入一个调用者不期望的值,即使值的类型是正确的

 

三、主动抛出异常

主动抛出异常,就是我们在代码里面让它自动抛出一个异常,然后捕捉到,比如说我们在写自动化测试脚本的时候,结果和预期不符合,就可以主动抛出一个异常信息,然后捕捉到,做其他的处理,主动抛出异常使用raise关键字。

try:       raise KeyError#主动抛出一个keyerror的异常   except KeyError as e:       print('这个是我主动抛出的异常')

 

 

 

上一篇:python3 异常处理


下一篇:Nginx 从入门到放弃(四)