Discuss / Python / 错误处理&异常

错误处理&异常

Topic source
try:
    正常运行的代码
except ValueError as e:
    遇到ValueError错误时,要执行的代码
except ZeroDivisionError as e:
    ZeroDivisionError错误时,执行的代码 
else:
    没有错误时,执行的代码
finally:
    最后总会执行的代码
-----------------------------------------
raise xx 抛出一个指定的异常
-----------------------------------------
常见异常:
AttributeError 是否访问一个对象没有的属性
IOError  输入/输出异常,通常是无法打开文件
ImportError  无法引入模块或包;基本是路径问题或名称问题
IndentationError   语法错误;代码没对齐
IndexError 下标索引超边界
KeyError 访问字典中不存在的键
KeyboardInterrupt   Ctrl+c产生
NameError 使用一个还未被赋予对象的变量
SyntaxError   代码非法
TypeError 传入对象类型与要求不符合
UnboundLocalError 试图访问一个还未被设置的局部变量
ValueError 传入一个调用者不期望的值,即使值的类型是正确的

补充:except

try:
    正常运行的代码
except ValueError as e:
    遇到ValueError错误时,要执行的代码
except ZeroDivisionError as e:
    ZeroDivisionError错误时,执行的代码 
except:
    相当于错误通配符else:
    没有错误时,执行的代码
finally:
    最后总会执行的代码

调用栈: 错误定位

$ python3 err.py
Traceback (most recent call last):
  File "err.py", line 11, in <module>
    main()
  File "err.py", line 9, in main
    bar('0')
  File "err.py", line 6, in bar
    return foo(s) * 2
  File "err.py", line 3, in foo
    return 10 / int(s)
ZeroDivisionError: division by zero   #根据程序执行顺序逐层上抛,此处最后两行体现了错误原因

  • 1

Reply