天天看點

python主動抛出異常和自定義異常

一、主動抛出異常 raise

Python 使用 raise 語句抛出一個指定的異常。

raise 唯一的一個參數指定了要被抛出的異常。

它必須是一個異常的執行個體或者是異常的類(也就是 Exception 的子類)。

如下:

x = 10
if x > 5:
    raise Exception('x 不能大于 5。x 的值為: {}'.format(x))      

結果如下:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    raise Exception('x 不能大于 5。x 的值為: {}'.format(x))
Exception: x 不能大于 5。x 的值為: 10      

如果你隻想知道這是否抛出了一個異常,并不想去處理它,那麼一個簡單的 raise 語句就可以再次把它抛出。

try:
    raise NameError('HiThere')
except NameError:
    print('An exception flew by!')
    raise      

二、自定義異常

自定義類必須繼承Exception,自定義異常如下:

class MySQLError(Exception):
    def __init__(self, error_info):
        super(MySQLError, self).__init__(error_info)
        self.error_info = error_info

    def __str__(self):
        return self.error_info      

使用如下:

try:
    raise MySQLError('異常')
except MySQLError as e:
    print(e)      

結束!