入门python-异常(2)

异常相关
捕获异常: 
try:
except:               # 捕获所有的异常 等同于except Exception:
except name:          # 捕获指定的异常
except name, value:   # 捕获指定的异常和额外的数据(实例)
except (name1, name2):
except (name1, name2), value:
except name4 as X:
else:                 # 如果没有发生异常
finally:                              # 总会执行的部分
# 引发异常: raise子句(raise SyntaxError)
raise
raise <instance>  
raise <class> 
用户自定义异常: class Bad(Exception):.....
Exception超类 / except基类即可捕获到其所有子类
class MyBad(Exception):
    def __str__(self):
        return '定制的打印消息'
>>> try:
...     raise MyBad()
... except MyBad as x:
...     print x
定制的打印消息

关于sys.exc_info:允许一个异常处理器获取对最近引发的异常的访问
    try:
        ......
    except:
        # 此时sys.exc_info()返回一个元组(type, value, traceback)
        # type:正在处理的异常的异常类型
        # value:引发的异常的实例
        # traceback:堆栈信息
eg:
>>> try:
...     int('a')
... except:
...     sys.exc_info()
...
(<type 'exceptions.ValueError'>, ValueError("invalid literal for int() with base 10: 'a'",), <traceback object at 0x10a7a6bd8>)

采用traceback(跟踪)模块查看异常:
>>> import traceback
>>>
>>> try:
...     int('a')
... except:
...     traceback.print_exc()
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ValueError: invalid literal for int() with base 10: 'a'
异常层次:
BaseException
    +-- SystemExit
    +-- KeyboardInterrupt
    +-- GeneratorExit
    +-- Exception
        +-- StopIteration
        +-- ArithmeticError
        +-- AssertionError
        +-- AttributeError
        +-- BufferError
        +-- EOFError
        +-- ImportError
        +-- LookupError
        +-- MemoryError
        +-- NameError
        +-- OSError
        +-- ReferenceError
        +-- RuntimeError
        +-- SyntaxError
        +-- SystemError
        +-- TypeError
        +-- ValueError
        +-- Warning
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值