python-异常

异常

刚开始觉得异常没多大作用,不就是报个错吗。后来在写python时才发现没了它程序就没法运行了。比如说我需要删除许多生成的临时表,但是不确定那些是有的,那些是没有的。因为程序可能中途停止了,如果不用try…expect来跳过这些错误的话,在删除的时候就可能导致程序终止。

定义异常类

需要直接或间接地继承Exception

1
2
class MyError(Exception):
pass

抽象异常

1
2
3
4
5
6
7
# 这样写了之后即使被除数输入了零,也不会导致程序终止,而是按照我们写的给出提示
try:
a = int(input("num1"))
b = int(input("num2"))
print(a/b)
except ZeroDivisionError:
print("num2 can not to be zero")

捕获多个异常时,使用元组将多个异常放在一起,同时可打印异常

1
2
3
# 这样就把输入零,字符等错误都包含进去了
except(ZeroDivisionError, TypeError, NameError) as e:
print(e)

什么都不写时,可捕获除Exception父类BaseException的异常。

1
2
except:
print("wrong")

捕获所有异常的情况下,打印错误信息

1
2
except Exception as e:
print(e)

加上else可实现循环:

1
2
3
4
5
while True:
try:
except:
else:
break

无论是否发送错误,都将执行finally之后的语句

1
2
finally:
del a, b

完整格式:

1
2
3
4
5
6
try:
something
except:
something
finally:
do something