错误 Error
逻辑错误:算法写错了,例如加法写成了减法,笔误,例如变量名写错了,语法错误。
函数或类使用错误,其实这也属于逻辑错误,总之,错误是尅避免的。
异常 Exception
本意是意外情况,这有个前提,没有出现上面说的错误,也就是说程序写的没问题,但是在某些情况下,会出现一些意外的情况导致应用程序无法正常的执行下去。
例如使用open打开一个文件,文件不存在,或者创建一个文件文件已经存在(使用mode='x'),或者访问一个网络文件,突然断网了,这就是异常,是一个意外的情况。
异常是不可避免的。
错误和异常
在高级编程语言中,一般都有错误和异常的概念,异常是可以捕获,并被处理的,但是错误是不能被捕获的。
示例:
异常
错误
一个健壮的程序尽可能的避免错误,尽可能的捕获、处理各种异常。
产生异常
产生:
raise语句显式的抛出异常。
Python解释器自己检测到异常并引发它
def foo(): print('before') print(1/0) print('after') foo() #输出 Traceback (most recent call last): File "D:/Python/错误和异常处理.py", line 5, in <module> foo() File "D:/Python/错误和异常处理.py", line 3, in foo print(1/0) ZeroDivisionError: division by zero before
def bar(): print('before') raise Exception('my exception') print('after') bar() #输出 Traceback (most recent call last): File "D:/Python/错误和异常处理.py", line 12, in <module> bar() File "D:/Python/错误和异常处理.py", line 10, in bar raise Exception('my exception') Exception: my exception before
程序会在异常抛出的地方中段执行,后面的语句则不会将在执行,如果不捕获,就会提前结束程序。