python中的异常类型处理

来源:互联网 发布:c语言编译器win10 编辑:程序博客网 时间:2024/06/06 20:19

3、异常和函数

在函数内引发异常时,它就会被传播到到函数调用的地方(对于方法也是一样的)

>>> def faulty():raise Exception('Something is wrong')>>> def ignore_expection():faulty()>>> def handle_excepton():try:faulty()except:print 'Exception handled'>>> ignore_expection()Traceback (most recent call last):  File "<pyshell#252>", line 1, in <module>    ignore_expection()  File "<pyshell#245>", line 2, in ignore_expection    faulty()  File "<pyshell#242>", line 2, in faulty    raise Exception('Something is wrong')Exception: Something is wrong

可以看到,faulty中产生的异常通过faulty和ignore_exception传播,最终导致了堆栈跟踪。同样地,它也传播了handle_exception,但在这个函数中被try/except语句处理。

 

>>> def describePerson(person):print 'Description of',person['name']print 'Age:',person['age']try:print 'Occupation:',person['occupation']except KeyError:pass>>> describePerson({'name':'Throatwobbler','age':42})Description of ThroatwobblerAge: 42Occupation:>>> 


 

>>> def describePerson(person):print 'Description of',person['name']print 'Age:',person['age']try:print 'Occupation:'+ person['occupation']except KeyError: #是捕获键值不存在时pass>>> describePerson({'name':'Throatwobbler','age':42})Description of ThroatwobblerAge: 42>>> 

注:这里在打印职业时,使用加号而不是逗号。否则字符串'Occupaton:'在异常引发之前就会被输出。

 

查看某对象是否有write属性

try:object.writeexcept AttributeError:print  'The object is not writeable'else:print 'The object is writeable'
原创粉丝点击