try...except可以将可能发生错误的语句放在try模块里面进行异常处理;
try..except..else当没有异常发生时,else中的语句将会被执行。
处理一组异常可以这样写(其中e代表异常的实例):
1 data = {'a':1}
2 try:
3 pass
4 except (IOError ,ZeroDivisionError),e:
5 print e
用户自定义异常
通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。
在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例
1 class Networkerror(RuntimeError):
2 def __init__(self, arg):
3 self.args = arg
4
5
6 try:
7 raise Networkerror("Bad hostname")
8 except Networkerror as e:
9 print('哦,也')
else和finally语句示例:
KeyError,FileNotFoundError都是错误类型,如果没有定义错误类型则由Exception返回,但是个别的异常不能处理。
1 try:
2 # data['s']
3 # open('txt.txt')
4 # a=setattr()
5 a=1
6 except KeyError as e:
7 print("关键字错误",e)
8 except FileNotFoundError as a:
9 print("文件错误",a)
10 except Exception as b:
11 print('异常的父类,可以捕获所有的异常,个别除外',b)
12
13 else:
14 print('保护不抛出异常的代码')
15
16 finally:
17 print('不管对不对都要执行')