异常处理

try...except可以将可能发生错误的语句放在try模块里面进行异常处理;
try..except..else当没有异常发生时,else中的语句将会被执行。

处理一组异常可以这样写(其中e代表异常的实例):

1 data = {'a':1}
2 try3     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('不管对不对都要执行')
posted @ 2017-11-24 16:40  橙子味的萝卜  阅读(99)  评论(0编辑  收藏  举报