成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

編程須知:Python異常知多少以及如何處理?

開(kāi)發(fā) 后端
本文主要是認(rèn)識(shí)python的異常有哪些類(lèi)型,以及如何進(jìn)行python異常處理?有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。如果有其它編程語(yǔ)言經(jīng)驗(yàn),如Java,可以理解的更深入些。

 本文主要是認(rèn)識(shí)python的異常有哪些類(lèi)型,以及如何進(jìn)行python異常處理?有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。如果有其它編程語(yǔ)言經(jīng)驗(yàn),如Java,可以理解的更深入些。

[[277316]]

我們知道,異常處理,是編程語(yǔ)言或計(jì)算機(jī)硬件里的一種機(jī)制,用于處理軟件或信息系統(tǒng)中出現(xiàn)的異常狀況(即超出程序正常執(zhí)行流程的某些特殊條件),現(xiàn)代編程語(yǔ)言都有這種保證機(jī)制,以保證程序整體的運(yùn)行穩(wěn)健……廢話少說(shuō),來(lái)看看Python的異常以及相關(guān)處理。

1.異常的類(lèi)型

異常的類(lèi)型多種多樣,常見(jiàn)的異常有:

AttributeError 試圖訪問(wèn)一個(gè)對(duì)象沒(méi)有的屬性,比如foo.x,但是foo沒(méi)有屬性xIOError 輸入/輸出異常;基本上是無(wú)法打開(kāi)文件ImportError 無(wú)法引入模塊或包;基本上是路徑問(wèn)題或名稱(chēng)錯(cuò)誤IndentationError 語(yǔ)法錯(cuò)誤(的子類(lèi)) ;代碼沒(méi)有正確對(duì)齊IndexError 下標(biāo)索引超出序列邊界,比如當(dāng)x只有三個(gè)元素,卻試圖訪問(wèn)x[5]KeyError 試圖訪問(wèn)字典里不存在的鍵KeyboardInterrupt Ctrl+C被按下NameError 嘗試訪問(wèn)一個(gè)沒(méi)有申明的變量SyntaxError Python代碼非法,代碼不能編譯(個(gè)人認(rèn)為這是語(yǔ)法錯(cuò)誤,寫(xiě)錯(cuò)了)TypeError 傳入對(duì)象類(lèi)型與要求的不符合UnboundLocalError 試圖訪問(wèn)一個(gè)還未被設(shè)置的局部變量,基本上是由于另有一個(gè)同名的全局變量,導(dǎo)致你以為正在訪問(wèn)它ValueError 傳入一個(gè)調(diào)用者不期望的值,即使值的類(lèi)型是正確的

其他的異常:

Exception可以捕獲任意異常

BaseException 所有異常的基類(lèi)SystemExit 解釋器請(qǐng)求退出KeyboardInterrupt 用戶中斷執(zhí)行(通常是輸入^C)Exception 常規(guī)錯(cuò)誤的基類(lèi)StopIteration 迭代器沒(méi)有更多的值GeneratorExit 生成器(generator)發(fā)生異常來(lái)通知退出StandardError 所有的內(nèi)建標(biāo)準(zhǔn)異常的基類(lèi)ArithmeticError 所有數(shù)值計(jì)算錯(cuò)誤的基類(lèi)FloatingPointError 浮點(diǎn)計(jì)算錯(cuò)誤OverflowError 數(shù)值運(yùn)算超出最大限制ZeropisionError 除(或取模)零 (所有數(shù)據(jù)類(lèi)型)AssertionError 斷言語(yǔ)句失敗AttributeError 對(duì)象沒(méi)有這個(gè)屬性EOFError 沒(méi)有內(nèi)建輸入,到達(dá)EOF 標(biāo)記EnvironmentError 操作系統(tǒng)錯(cuò)誤的基類(lèi)IOError 輸入/輸出操作失敗OSError 操作系統(tǒng)錯(cuò)誤WindowsError 系統(tǒng)調(diào)用失敗ImportError 導(dǎo)入模塊/對(duì)象失敗LookupError 無(wú)效數(shù)據(jù)查詢的基類(lèi)IndexError 序列中沒(méi)有此索引(index)KeyError 映射中沒(méi)有這個(gè)鍵MemoryError 內(nèi)存溢出錯(cuò)誤(對(duì)于Python 解釋器不是致命的)NameError 未聲明/初始化對(duì)象 (沒(méi)有屬性)UnboundLocalError 訪問(wèn)未初始化的本地變量ReferenceError 弱引用(Weak reference)試圖訪問(wèn)已經(jīng)垃圾回收了的對(duì)象RuntimeError 一般的運(yùn)行時(shí)錯(cuò)誤NotImplementedError 尚未實(shí)現(xiàn)的方法SyntaxError Python 語(yǔ)法錯(cuò)誤IndentationError 縮進(jìn)錯(cuò)誤TabError Tab 和空格混用SystemError 一般的解釋器系統(tǒng)錯(cuò)誤TypeError 對(duì)類(lèi)型無(wú)效的操作ValueError 傳入無(wú)效的參數(shù)UnicodeError Unicode 相關(guān)的錯(cuò)誤UnicodeDecodeError Unicode 解碼時(shí)的錯(cuò)誤UnicodeEncodeError Unicode 編碼時(shí)錯(cuò)誤UnicodeTranslateError Unicode 轉(zhuǎn)換時(shí)錯(cuò)誤Warning 警告的基類(lèi)DeprecationWarning 關(guān)于被棄用的特征的警告FutureWarning 關(guān)于構(gòu)造將來(lái)語(yǔ)義會(huì)有改變的警告OverflowWarning 舊的關(guān)于自動(dòng)提升為長(zhǎng)整型(long)的警告PendingDeprecationWarning 關(guān)于特性將會(huì)被廢棄的警告RuntimeWarning 可疑的運(yùn)行時(shí)行為(runtime behavior)的警告SyntaxWarning 可疑的語(yǔ)法的警告UserWarning 用戶代碼生成的警告

2.捕獲異常,處理異常

只有將對(duì)應(yīng)的異常類(lèi)型捕獲才能進(jìn)行異常的處理

異常的捕獲處理方式:

  1. try: 
  2.  #程序執(zhí)行的代碼,異常檢測(cè)的代碼 
  3.  pass 
  4. except Exception as e: 
  5.  #捕獲異常后進(jìn)行的代碼, 
  6.  print(e) 
  7.  pass 
  8. else
  9.  #沒(méi)有捕獲到相應(yīng)的異常后進(jìn)行的代碼 
  10.  pass 
  11. finally: 
  12.  #不論有沒(méi)有異常捕獲最后都要執(zhí)行的代碼 
  13.  pass 

這里的except就像是java里的catch

也可以在代碼中添加多個(gè)except語(yǔ)句來(lái)捕獲不同種類(lèi)型的異常,執(zhí)行相應(yīng)不同的操作

3.主動(dòng)拋出異常

異常的拋出可以手動(dòng)添加

  1. try: 
  2.  raise Exception("我自己拋的"
  3. except Exception as e: 
  4.  print(e)#這里會(huì)輸出“我自己拋的” 

4.自定義異常類(lèi)型

在實(shí)際編程中,語(yǔ)言內(nèi)置的異常并不總夠用,所有,我們可以自己定義自己所需要的異常的類(lèi)型。可以這樣來(lái)實(shí)現(xiàn)。

主要利用類(lèi)中的__str__方法實(shí)現(xiàn)

  1. class myException(BaseException): 
  2.  def __init__(self,message): 
  3.  self.message=message 
  4.  def __str__(self): 
  5.  return self.message 
  6.   
  7. try: 
  8.  raise myException('自定義的異常類(lèi)型'
  9. except myException as e: 
  10.  print(e)  

5.斷言

斷言assert用于判斷某個(gè)條件是否成立,如果不成立則拋出AssertionError異常,該異常可以捕獲。

示例如下:

  1. assert 條件 
  2. 類(lèi)如: 
  3. assert 1 == 1 
  4. assert 2 + 2 == 2 * 2 
  5. assert len(['my list', 12]) < 10 
  6. assert range(3) == [0, 1, 2] 
  7. #相當(dāng)于 
  8. if not 條件 : 
  9.  raise AssertionError() 
  10.   
  11. assert 條件,"描述" 
  12. #相當(dāng)于 
  13. if not 條件 : 
  14.  raise AssertionError("描述"

下面是我們?nèi)绾斡?try-except 語(yǔ)句捕獲 AssertionError 異常:

  1. try: 
  2.  assert 1 == 0, 'One does not equal zero silly!' 
  3. except AssertionError, args: 
  4.  print(args.__class__.__name__, ":",args) 

以上就是python的異常以及相關(guān)處理。相信你在進(jìn)行Python編程時(shí),若有異常問(wèn)題,以上內(nèi)容,足以幫助你來(lái)處理啦。

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2021-12-10 07:47:30

Javascript異步編程

2013-07-15 15:35:06

2023-12-13 13:28:00

Spring全局異常處理架構(gòu)

2023-03-09 12:21:38

2021-12-09 06:41:56

Python協(xié)程多并發(fā)

2012-02-13 22:50:59

集群高可用

2024-08-06 10:07:15

2012-11-14 14:07:23

Mysql

2022-02-21 10:12:20

供應(yīng)鏈攻擊網(wǎng)絡(luò)攻擊

2023-07-04 10:16:36

IT員工IT團(tuán)隊(duì)主管

2012-11-12 10:32:48

IBMdw

2023-10-04 00:15:00

2010-08-16 09:15:57

2021-12-04 11:17:32

Javascript繼承編程

2013-12-23 14:00:31

Windows 8.2Windows 8.1

2025-04-14 08:50:00

Google ADK人工智能AI

2017-07-14 10:51:37

性能優(yōu)化SQL性能分析

2024-08-29 08:54:35

2023-02-02 08:56:25

線程池線程submit

2021-03-24 10:40:26

Python垃圾語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 视频一区二区在线观看 | 毛片视频免费观看 | 二区av | 亚洲色在线视频 | 国产精品99免费视频 | 欧美日韩精品久久久免费观看 | 一区二区三区精品在线 | 久久精品国产一区二区电影 | 亚洲精品电影网在线观看 | 中文精品视频 | 91av在线视频观看 | 亚洲精品二区 | 国产精品99久久久久久宅男 | 欧美久久久久久久久 | 另类专区亚洲 | 欧美亚洲国产日韩 | jizz在线免费观看 | 国产伦精品 | 中文字幕亚洲在线 | 91精品国产综合久久婷婷香蕉 | 粉嫩国产精品一区二区在线观看 | 九九热在线免费视频 | 拍拍无遮挡人做人爱视频免费观看 | 九九热精品在线 | 欧美日高清| 国产成人精品一区二 | 黑人巨大精品欧美一区二区免费 | 国产激情在线观看 | 日韩欧美一区在线 | 国产一区二区在线免费视频 | 国产精品久久久亚洲 | 亚洲高清久久 | 国产在线成人 | 91久久国产综合久久 | 国外成人在线视频网站 | 亚洲一区二区精品视频 | 美女日批免费视频 | 综合二区 | 懂色tv | 日韩黄a| 高清成人免费视频 |