异常处理及程序调试
概述
- NameError:尝试访问一个没有声明的变量引发错误
- IndexError:索引超出序列范围引发错误
- IndentationError:缩进错误
- ValueError:传入的值错误
- KeyError:请求一个不存在的字典关键字引发错误
- IOError:输入输出错误
- ImportError:import无法找到模块引发错误
- AttributeError:访问未知的对象属性引发错误
- TypeError:类型不合适引发错误
- MemoryError:内存不足
- ZeroDivisionError:除数为0引发错误
异常处理语句
try…except
try:
block1
except [ExceptionName [as alias]]:
block2
except [ExceptionName [as alias]]: #可以接多个except对应不同的异常
block3
try…except…else
try:
block1
except [ExceptionName [as alias]]:
block2
else:
block3 #当try语句块中没有发现异常时,这部分会被接着执行
try…except…finally
try:
block1
except [ExceptionName [as alias]]:
block2
finally:
block3 #无论有没有异常,这部分都会被接着执行
raise
如果某个函数可能产生异常,但不想在当前函数中处理,则可以使用raise语句在函数中抛出异常
raise [ExceptionName[(reason)]]
例:
def func1():
a = int(input("please input: "))
if a < 10:
raise ValueError("a < 10")
result = a
if __name__ == '__main__':
try:
func1()
except ValueError:
print("work wrong", e)
程序调试
使用自带的IDLE进行调试
打开IDLE,选择Debug->Debugger,添加断点进行调试
使用assert语句进行调试
assert expression [, reason]
例:
def func1():
a = int(input("please input: "))
assert a >10
result = a
if __name__ = '__main__':
func1()
当a>10时,会抛出AssertionError异常