中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python異常繼承關系和自定義異常實現代碼實例

發布時間:2020-10-14 23:28:04 來源:腳本之家 閱讀:174 作者:酸果實愛吐泡泡的魚 欄目:開發技術

這篇文章主要介紹了Python異常繼承關系和自定義異常實現代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

主要介紹 python 中異常的繼承關系,及如何自定義異常

1. 異常的繼承關系

BaseException # 所有異常的基類
 +-- SystemExit # 解釋器請求退出
 +-- KeyboardInterrupt  用戶中斷執行(通常是輸入^C)
 +-- GeneratorExit # 生成器(generator)發生異常來通知退出
 +-- Exception # 常規異常的基類
  +-- StopIteration # 迭代器沒有更多的值
  +-- StandardError # 標準錯誤
  | +-- BufferError
  | +-- ArithmeticError
  | | +-- FloatingPointError
  | | +-- OverflowError
  | | +-- ZeroDivisionError
  | +-- AssertionError
  | +-- AttributeError
  | +-- EnvironmentError
  | | +-- IOError
  | | +-- OSError
  | |   +-- WindowsError (Windows)
  | |   +-- VMSError (VMS)
  | +-- EOFError
  | +-- ImportError
  | +-- LookupError
  | | +-- IndexError
  | | +-- KeyError
  | +-- MemoryError
  | +-- NameError
  | | +-- UnboundLocalError
  | +-- ReferenceError
  | +-- RuntimeError
  | | +-- NotImplementedError
  | +-- SyntaxError
  | | +-- IndentationError
  | |   +-- TabError
  | +-- SystemError
  | +-- TypeError
  | +-- ValueError
  |   +-- UnicodeError
  |    +-- UnicodeDecodeError
  |    +-- UnicodeEncodeError
  |    +-- UnicodeTranslateError
  +-- Warning
   +-- DeprecationWarning
   +-- PendingDeprecationWarning
   +-- RuntimeWarning
   +-- SyntaxWarning
   +-- UserWarning
   +-- FutureWarnin
   +-- ImportWarnin
   +-- UnicodeWarnin
   +-- BytesWarning

2. 自定義異常

#自定義異常 需要繼承Exception
class MyException(Exception):

 def __init__(self, *args):
  self.args = args

if __name__ == '__main__':
 try:
  raise MyException("自定義異常")
 except MyException as e:
  print e

3. 異常捕獲

# 示例
str1 = 'abc'
try:
 int(str1)
except IndexError as e:
 print e
except KeyError as e:
 print e
except ValueError as e:
 print e
else:
 print 'try內正常處理'
finally:
 print '無論異常與否,都會執行我'

4. 主動觸發異常

# raise xxx
def test_zero(num):
 try:
  if num == 0:
   raise ValueError('參數錯誤')
  return num
 except Exception as e:
  print e

test_zero(0)

5. 采用traceback模塊查看異常

異常發生時,Python 能“記住”引發的異常以及程序的當前狀態。

Python 維護著traceback(跟蹤)對象,其中含有異常發生時與函數調用堆棧有關的信息。

異常可能在一系列嵌套較深的函數調用中引發。

程序調用每個函數時,Python 會在“函數調用堆棧”的起始處插入函數名。一旦異常被引發,Python 會搜索一個相應的異常處理程序。如果當前函數中沒有異常處理程序,當前函數會終止執行,Python 會搜索當前函數的調用函數,并以此類推,直到發現匹配的異常處理程序,或者Python 抵達主程序為止。這一查找合適的異常處理程序的過程稱為“堆棧輾轉開解”(StackUnwinding)。

解釋器一方面維護著與放置堆棧中的函數有關的信息,另一方面也維護著與已從堆棧中“輾轉開解”的函數有關的信息。

#示例
def div(num1, num2):
 try:
  result = num1/num2
  return result
 except Exception as e:
  traceback.print_exc()

print div(1, 0)
#執行結果
Traceback (most recent call last):
None
 File "F:/Technology-20161005/python/python_project/demo/exceptiondemo/exceptiondemo.py", line 17, in div
 result = num1/num2
ZeroDivisionError: integer division or modulo by zero
# 可以將異常信息寫到文件中
traceback.print_exc(file=open('1.txt','w+'))

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

麦盖提县| 哈尔滨市| 融水| 宝山区| 清丰县| 桐乡市| 濉溪县| 哈尔滨市| 衡阳市| 台南县| 青岛市| 沙河市| 名山县| 通山县| 报价| 平乡县| 奉化市| 太保市| 巴林左旗| 黔江区| 高清| 馆陶县| 黄山市| 中阳县| 连平县| 甘谷县| 曲靖市| 建平县| 平山县| 杭锦旗| 五台县| 泸州市| 永善县| 江北区| 宁都县| 乌拉特中旗| 周宁县| 定襄县| 峨山| 惠州市| 和龙市|