异常处理
异常Exception
错误 Error :错误是可以避免的
逻辑错误:算法写错了,加法写成了减法
笔误:变量名写错了,语法错误
函数或类使用错误,其实这也属于逻辑错误
异常 Exception :异常不可能避免
本意就是意外情况
这有个前提,没有出现上面说的错误,也就是说程序写的没有问题,但是在某些情况下,会出现一些意外,导致程序无法正常的执行下去。
例如open函数操作一个文件,文件不存在,或者创建一个文件时已经存在了,或者访问一个网络文件,突然断网了,这就是异常,是个意外的情况。
错误和异常
在高级编程语言中,一般都有错误和异常的概念,异常是可以捕获,并被处理的,但是错误是不能被捕获的。
产生异常
产生:
- raise 语句显式的抛出异常
- Python解释器自己检测到异常并引发它
程序会在异常抛出的地方中断执行,如果不捕获,就会提前结束程序(其实是终止当前线程的执行)
raise语句
raise后什么都没有,表示抛出最近一个被激活的异常,如果没有,则抛类型异常。这种方式很少用 。
raise后要求应该是BaseException类的子类或实例,如果是类,将被无参实例化。
异常类及继承层次
# Python异常的继承
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- RuntimeError
| +-- RecursionError
+-- MemoryError
+-- NameError
+-- StopIteration
+-- StopAsyncIteration
+-- ArithmeticError
| +-- FloatingPointError
| +-- OverflowError
| +-- ZeroDivisionError
+-- LookupError
| +-- IndexError
| +-- KeyError
+-- SyntaxError
+-- OSError
| +--