• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠。
            隨筆 - 397, 文章 - 0, 評論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            python一般常見異常處理

            異常類層次結(jié)構(gòu)
            BaseException
             +-- SystemExit
             +-- KeyboardInterrupt
             +-- GeneratorExit
             +-- Exception
                  +-- StopIteration
                  +-- StopAsyncIteration
                  +-- ArithmeticError
                  |    +-- FloatingPointError
                  |    +-- OverflowError
                  |    +-- ZeroDivisionError
                  +-- AssertionError
                  +-- AttributeError
                  +-- BufferError
                  +-- EOFError
                  +-- ImportError
                  |    +-- ModuleNotFoundError
                  +-- LookupError
                  |    +-- IndexError
                  |    +-- KeyError
                  +-- MemoryError
                  +-- NameError
                  |    +-- UnboundLocalError
                  +-- OSError
                  |    +-- BlockingIOError
                  |    +-- ChildProcessError
                  |    +-- ConnectionError
                  |    |    +-- BrokenPipeError
                  |    |    +-- ConnectionAbortedError
                  |    |    +-- ConnectionRefusedError
                  |    |    +-- ConnectionResetError
                  |    +-- FileExistsError
                  |    +-- FileNotFoundError
                  |    +-- InterruptedError
                  |    +-- IsADirectoryError
                  |    +-- NotADirectoryError
                  |    +-- PermissionError
                  |    +-- ProcessLookupError
                  |    +-- TimeoutError
                  +-- ReferenceError
                  +-- RuntimeError
                  |    +-- NotImplementedError
                  |    +-- RecursionError
                  +-- SyntaxError
                  |    +-- IndentationError
                  |         +-- TabError
                  +-- SystemError
                  +-- TypeError
                  +-- ValueError
                  |    +-- UnicodeError
                  |         +-- UnicodeDecodeError
                  |         +-- UnicodeEncodeError
                  |         +-- UnicodeTranslateError
                  +-- Warning
                       +-- DeprecationWarning
                       +-- PendingDeprecationWarning
                       +-- RuntimeWarning
                       +-- SyntaxWarning
                       +-- UserWarning
                       +-- FutureWarning
                       +-- ImportWarning
                       +-- UnicodeWarning
                       +-- BytesWarning
                       +-- ResourceWarning 

            通用的異常處理:
            try:
                return int(time.mktime(time.strptime(datetimeString, "%Y-%m-%d %H:%M:%S")))
            except Exception as e:
                print('Err type:',e.__class__.__name__)
                print('str(Exception):\t', str(Exception))
                print('str(e):\t\t', str(e))
                print('repr(e):\t', repr(e))
                print('e.message:\t', e.message)
                traceback.print_exc()          #堆棧

            附注:異常類簡要說明
            一、基類:下列異常主要被用作其他異常的基類。
            1、exception BaseException
                所有內(nèi)置異常的基類。 它不應(yīng)該被用戶自定義類直接繼承 (這種情況請使用 Exception)。 如果在此類的實例上調(diào)用 str(),則會返回實例的參數(shù)表示,或者當沒有參數(shù)時返回空字符串。
                args 傳給異常構(gòu)造器的參數(shù)元組。 某些內(nèi)置異常 (例如 OSError) 接受特定數(shù)量的參數(shù)并賦予此元組中的元素特殊的含義,而其他異常通常只接受一個給出錯誤信息的單獨字符串。
                with_traceback(tb)將tb 設(shè)為異常的新回溯信息并返回該異常對象。 它通常以如下的形式在異常處理程序中使用:
                try:
                    ...
                except SomeException:
                    tb = sys.exc_info()[2]
                    raise OtherException(...).with_traceback(tb)
                    
            2、exception Exception 所有內(nèi)置的非系統(tǒng)退出類異常都派生自此類。 所有用戶自定義異常也應(yīng)當派生自此類。
            3、exception ArithmeticError 此基類用于派生針對各種算術(shù)類錯誤而引發(fā)的內(nèi)置異常: OverflowError, ZeroDivisionError, FloatingPointError。
            4、exception BufferError 當與緩沖區(qū)相關(guān)的操作無法執(zhí)行時將被引發(fā)。
            5、exception LookupError 此基類用于派生當映射或序列所使用的鍵或索引無效時引發(fā)的異常: IndexError, KeyError。 這可以通過 codecs.lookup() 來直接引發(fā)。
            二、具體異常 以下異常屬于經(jīng)常被引發(fā)的異常。
            1、exception AssertionError assert 語句失敗時將被引發(fā)。
            2、exception AttributeError 當屬性引用 (參見 屬性引用) 或賦值失敗時將被引發(fā)。 (當一個對象根本不支持屬性引用或?qū)傩再x值時則將引發(fā) TypeError。)
            3、exception EOFError 當input() 函數(shù)未讀取任何數(shù)據(jù)即達到文件結(jié)束條件 (EOF) 時將被引發(fā)。 (另外,io.IOBase.read() 和 io.IOBase.readline() 方法在遇到 EOF 則將返回一個空字符串。)
            4、exception GeneratorExit 當一個 generator 或 coroutine 被關(guān)閉時將被引發(fā);參見 generator.close() 和 coroutine.close()。 它直接繼承自 BaseException 而不是 Exception,因為從技術(shù)上來說它并不是一個錯誤。
            5、exception ImportError 當 import 語句嘗試加載模塊遇到麻煩時將被引發(fā)。 并且當 from ... import 中的 "from list" 存在無法找到的名稱時也會被引發(fā)。name 與 path 屬性可通過對構(gòu)造器使用僅關(guān)鍵字參數(shù)來設(shè)定。 設(shè)定后它們將分別表示被嘗試導(dǎo)入的模塊名稱與觸發(fā)異常的任意文件所在路徑。
            6、exception ModuleNotFoundError ImportError 的子類,當一個模塊無法被定位時將由 import 引發(fā)。 當在 sys.modules 中找到 None 時也會被引發(fā)。
            7、exception IndexError 當序列抽取超出范圍時將被引發(fā)。 (切片索引會被靜默截短到允許的范圍;如果指定索引不是整數(shù)則 TypeError 會被引發(fā)。)
            8、exception KeyError 當在現(xiàn)有鍵集合中找不到指定的映射(字典)鍵時將被引發(fā)。
            9、exception KeyboardInterrupt 當用戶按下中斷鍵 (通常為 Control-C 或 Delete) 時將被引發(fā)。 在執(zhí)行期間,會定期檢測中斷信號。 該異常繼承自 BaseException 以確保不會被處理 Exception 的代碼意外捕獲,這樣可以避免退出解釋器。
            10、exception MemoryError 當一個操作耗盡內(nèi)存但情況仍可(通過刪除一些對象)進行挽救時將被引發(fā)。 關(guān)聯(lián)的值是一個字符串,指明是哪種(內(nèi)部)操作耗盡了內(nèi)存。 
                請注意由于底層的內(nèi)存管理架構(gòu)(C 的 malloc() 函數(shù)),解釋器也許并不總是能夠從這種情況下完全恢復(fù);但它畢竟可以引發(fā)一個異常,這樣就能打印出棧回溯信息,以便找出導(dǎo)致問題的失控程序。
            11、exception NameError 當某個局部或全局名稱未找到時將被引發(fā)。 此異常僅用于非限定名稱。 關(guān)聯(lián)的值是一條錯誤信息,其中包含未找到的名稱。
            12、exception NotImplementedError 此異常派生自 RuntimeError。 在用戶自定義的基類中,抽象方法應(yīng)當在其要求所派生類重載該方法,或是在其要求所開發(fā)的類提示具體實現(xiàn)尚待添加時引發(fā)此異常。
            注解 它不應(yīng)當用來表示一個運算符或方法根本不能被支持 -- 在此情況下應(yīng)當讓特定運算符 / 方法保持未定義,或者在子類中將其設(shè)為 None。
            注解 NotImplementedError 和 NotImplemented 不可互換,即使它們有相似的名稱和用途。 請參閱 NotImplemented 了解有關(guān)何時使用它們的詳細說明。
            13、exception OSError([arg])
                exception OSError(errno, strerror[, filename[, winerror[, filename2]]])
                此異常在一個系統(tǒng)函數(shù)返回系統(tǒng)相關(guān)的錯誤時將被引發(fā),此類錯誤包括 I/O 操作失敗例如 "文件未找到" 或 "磁盤已滿" 等(不包括非法參數(shù)類型或其他偶然性錯誤)。
                構(gòu)造器的第二種形式可設(shè)置如下所述的相應(yīng)屬性。 如果未指定這些屬性則默認為 None。 為了能向下兼容,如果傳入了三個參數(shù),則 args 屬性將僅包含由前兩個構(gòu)造器參數(shù)組成的 2 元組。
                構(gòu)造器實際返回的往往是 OSError 的某個子類,如下文 OS exceptions 中所描述的。 具體的子類取決于最終的 errno 值。 此行為僅在直接或通過別名來構(gòu)造 OSError 時發(fā)生,并且在子類化時不會被繼承。
                errno來自于 C 變量 errno 的數(shù)字錯誤碼。
                winerror 在 Windows 下,此參數(shù)將給出原生的 Windows 錯誤碼。 而 errno 屬性將是該原生錯誤碼在 POSIX 平臺下的近似轉(zhuǎn)換形式。
                在 Windows 下,如果 winerror 構(gòu)造器參數(shù)是一個整數(shù),則 errno 屬性會根據(jù) Windows 錯誤碼來確定,而 errno 參數(shù)會被忽略。 在其他平臺上,winerror 參數(shù)會被忽略,并且 winerror 屬性將不存在。
                strerror 操作系統(tǒng)所提供的相應(yīng)錯誤信息。 它在 POSIX 平臺中由 C 函數(shù) perror() 來格式化,在 Windows 中則是由 FormatMessage()。
                filename filename2 :對于與文件系統(tǒng)路徑有關(guān) (例如 open() 或 os.unlink()) 的異常,filename 是傳給函數(shù)的文件名。 對于涉及兩個文件系統(tǒng)路徑的函數(shù) (例如 os.rename()),filename2 將是傳給函數(shù)的第二個文件名。
                EnvironmentError, IOError, WindowsError, socket.error, select.error 與 mmap.error 已被合并到 OSError,構(gòu)造器可能返回其中一個子類。
                filename 屬性現(xiàn)在將是傳給函數(shù)的原始文件名,而不是經(jīng)過編碼或基于文件系統(tǒng)編碼進行解碼之后的名稱。 此外還添加了 filename2 構(gòu)造器參數(shù)和屬性。
            14、exception OverflowError
            當算術(shù)運算的結(jié)果大到無法表示時將被引發(fā)。 這對整數(shù)來說不可能發(fā)生(寧可引發(fā) MemoryError 也不會放棄嘗試)。 但是出于歷史原因,有時也會在整數(shù)超出要求范圍的情況下引發(fā) OverflowError。 因為在 C 中缺少對浮點異常處理的標準化,大多數(shù)浮點運算都不會做檢查。
            15、exception RecursionError:此異常派生自 RuntimeError。 它會在解釋器檢測發(fā)現(xiàn)超過最大遞歸深度 (參見 sys.getrecursionlimit()) 時被引發(fā)。
            16、exception ReferenceError:此異常將在使用 weakref.proxy() 函數(shù)所創(chuàng)建的弱引用來訪問該引用的某個已被作為垃圾回收的屬性時被引發(fā)。 有關(guān)弱引用的更多信息請參閱 weakref 模塊。
            17、exception RuntimeError:當檢測到一個不歸屬于任何其他類別的錯誤時將被引發(fā)。 關(guān)聯(lián)的值是一個指明究竟發(fā)生了什么問題的字符串。
            18、exception StopIteration
             由內(nèi)置函數(shù) next() 和 iterator 的 __next__() 方法所引發(fā),用來表示該迭代器不能產(chǎn)生下一項。
             該異常對象只有一個屬性 value,它在構(gòu)造該異常時作為參數(shù)給出,默認值為 None。
             當一個 generator 或 coroutine 函數(shù)返回時,將引發(fā)一個新的 StopIteration 實例,函數(shù)返回的值將被用作異常構(gòu)造器的 value 形參。
             如果某個生成器代碼直接或間接地引發(fā)了 StopIteration,它會被轉(zhuǎn)換為 RuntimeError (并將 StopIteration 保留為導(dǎo)致新異常的原因)。
            19、exception StopAsyncIteration:必須由一個 asynchronous iterator 對象的 __anext__() 方法來引發(fā)以停止迭代操作。
            20、exception SyntaxError
            當解析器遇到語法錯誤時將被引發(fā)。 這可以發(fā)生在 import 語句,對內(nèi)置函數(shù) exec() 或 eval() 的調(diào)用,或者讀取原始腳本或標準輸入(也包括交互模式)的時候。
            該類的實例包含有屬性 filename, lineno, offset 和 text 用于方便地訪問相應(yīng)的詳細信息。 異常實例的 str() 僅返回消息文本。
            21、exception IndentationError:與不正確的縮進相關(guān)的語法錯誤的基類。 這是 SyntaxError 的一個子類。
            22、exception TabError:當縮進包含對制表符和空格符不一致的使用時將被引發(fā)。 這是 IndentationError 的一個子類。
            23、exception SystemError:當解釋器發(fā)現(xiàn)內(nèi)部錯誤,但情況看起來尚未嚴重到要放棄所有希望時將被引發(fā)。 關(guān)聯(lián)的值是一個指明發(fā)生了什么問題的字符串(表示為低層級的符號)。
            24、exception SystemExit
               此異常由 sys.exit() 函數(shù)引發(fā)。 它繼承自 BaseException 而不是 Exception 以確保不會被處理 Exception 的代碼意外捕獲。 
               這允許此異常正確地向上傳播并導(dǎo)致解釋器退出。 如果它未被處理,則 Python 解釋器就將退出;不會打印任何棧回溯信息。
               構(gòu)造器接受的可選參數(shù)與傳遞給 sys.exit() 的相同。 如果該值為一個整數(shù),則它指明系統(tǒng)退出狀態(tài)碼(會傳遞給 C 的 exit() 函數(shù));如果該值為 None,則退出狀態(tài)碼為零;如果該值為其他類型(例如字符串),則會打印對象的值并將退出狀態(tài)碼設(shè)為一。
               對 sys.exit() 的調(diào)用會被轉(zhuǎn)換為一個異常以便能執(zhí)行清理處理程序 (try 語句的 finally 子句),并且使得調(diào)試器可以執(zhí)行一段腳本而不必冒失去控制的風(fēng)險。 如果絕對確實地需要立即退出(例如在調(diào)用 os.fork() 之后的子進程中)則可使用 os._exit().
               code 傳給構(gòu)造器的退出狀態(tài)碼或錯誤信息(默認為 None。)
            25、exception TypeError
               當一個操作或函數(shù)被應(yīng)用于類型不適當?shù)膶ο髸r將被引發(fā)。 關(guān)聯(lián)的值是一個字符串,給出有關(guān)類型不匹配的詳情。
               此異常可以由用戶代碼引發(fā),以表明嘗試對某個對象進行的操作不受支持也不應(yīng)當受支持。 如果某個對象應(yīng)當支持給定的操作但尚未提供相應(yīng)的實現(xiàn),所要引發(fā)的適當異常應(yīng)為 NotImplementedError。
               傳入?yún)?shù)的類型錯誤 (例如在要求 int 時卻傳入了 list) 應(yīng)當導(dǎo)致 TypeError,但傳入?yún)?shù)的值錯誤 (例如傳入要求范圍之外的數(shù)值) 則應(yīng)當導(dǎo)致 ValueError。
            26、exception UnboundLocalError:當在函數(shù)或方法中對某個局部變量進行引用,但該變量并未綁定任何值時將被引發(fā)。 此異常是 NameError 的一個子類。
            27、exception UnicodeError:當發(fā)生與 Unicode 相關(guān)的編碼或解碼錯誤時將被引發(fā)。 此異常是 ValueError 的一個子類。
            28、UnicodeError 具有一些描述編碼或解碼錯誤的屬性。 例如 err.object[err.start:err.end] 會給出導(dǎo)致編解碼器失敗的特定無效輸入。
              encoding 引發(fā)錯誤的編碼名稱。
              reason 描述特定編解碼器錯誤的字符串。
              object 編解碼器試圖要編碼或解碼的對象。
              start object 中無效數(shù)據(jù)的開始位置索引。
              end object 中無效數(shù)據(jù)的末尾位置索引(不含)。
            29、exception UnicodeEncodeError:當在編碼過程中發(fā)生與 Unicode 相關(guān)的錯誤時將被引發(fā)。 此異常是 UnicodeError 的一個子類。
            30、exception UnicodeDecodeError:當在解碼過程中發(fā)生與 Unicode 相關(guān)的錯誤時將被引發(fā)。 此異常是 UnicodeError 的一個子類。
            31、exception UnicodeTranslateError:在轉(zhuǎn)寫過程中發(fā)生與 Unicode 相關(guān)的錯誤時將被引發(fā)。 此異常是 UnicodeError 的一個子類。
            32、exception ValueError:當操作或函數(shù)接收到具有正確類型但值不適合的參數(shù),并且情況不能用更精確的異常例如 IndexError 來描述時將被引發(fā)。
            33、exception ZeroDivisionError:當除法或取余運算的第二個參數(shù)為零時將被引發(fā)。 關(guān)聯(lián)的值是一個字符串,指明操作數(shù)和運算的類型。
            下列異常被保留以與之前的版本相兼容;都是 OSError 的別名。
            exception EnvironmentError
            exception IOError
            exception WindowsError
            限在 Windows 中可用。
            三、OS 異常:OSError 的子類,它們將根據(jù)系統(tǒng)錯誤代碼被引發(fā)。
            1、exception BlockingIOError:當一個操作會被某個設(shè)置為非阻塞操作的對象(例如套接字)所阻塞時將被引發(fā)。 對應(yīng)于 errno EAGAIN, EALREADY, EWOULDBLOCK 和 EINPROGRESS。 
             除了 OSError 已有的屬性,BlockingIOError 還有一個額外屬性:
             characters_written 一個整數(shù),表示在被阻塞前已寫入到流的字符數(shù)。 當使用來自 io 模塊的帶緩沖 I/O 類時此屬性可用。
            2、exception ChildProcessError:當一個子進程上的操作失敗時將被引發(fā)。 對應(yīng)于 errno ECHILD。
            3、exception ConnectionError:與連接相關(guān)問題的基類。子類有BrokenPipeError, ConnectionAbortedError, ConnectionRefusedError 和 ConnectionResetError。
            4、exception BrokenPipeError:ConnectionError 的子類,當試圖寫入另一端已被關(guān)閉的管道,或是試圖寫入已關(guān)閉寫入的套接字時將被引發(fā)。 對應(yīng)于 errno EPIPE 和 ESHUTDOWN。
            5、exception ConnectionAbortedError:ConnectionError 的子類,當連接嘗試被對端中止時將被引發(fā)。 對應(yīng)于 errno ECONNABORTED。
            6、exception ConnectionRefusedError:ConnectionError 的子類,當連接嘗試被對端拒絕時將被引發(fā)。 對應(yīng)于 errno ECONNREFUSED。
            7、exception ConnectionResetError:ConnectionError 的子類,當連接被對端重置時將被引發(fā)。 對應(yīng)于 errno ECONNRESET。
            8、exception FileExistsError:當試圖創(chuàng)建一個已存在的文件或目錄時將被引發(fā)。 對應(yīng)于 errno EEXIST。
            9、exception FileNotFoundError:當所請求的文件或目錄不存在時將被引發(fā)。 對應(yīng)于 errno ENOENT。
            10、exception InterruptedError:當系統(tǒng)調(diào)用被輸入信號中斷時將被引發(fā)。 對應(yīng)于 errno EINTR。
              當系統(tǒng)調(diào)用被某個信號中斷時,Python 現(xiàn)在會重試系統(tǒng)調(diào)用,除非該信號的處理程序引發(fā)了其它異常 (原理參見 PEP 475) 而不是引發(fā) InterruptedError。
            11、exception IsADirectoryError:當請求對一個目錄執(zhí)行文件操作 (例如 os.remove()) 將被引發(fā)。 對應(yīng)于 errno EISDIR。
            12、exception NotADirectoryError:當請求對一個非目錄對象執(zhí)行目錄操作 (例如 os.listdir()) 時將被引發(fā)。 對應(yīng)于 errno ENOTDIR。
            13、exception PermissionError:當在沒有足夠操作權(quán)限的情況下試圖執(zhí)行某個操作時將被引發(fā) —— 例如缺少文件系統(tǒng)權(quán)限。 對應(yīng)于 errno EACCES 和 EPERM。
            14、exception ProcessLookupError:當給定的進程不存在時將被引發(fā)。 對應(yīng)于 errno ESRCH。
            15、exception TimeoutError:當一個系統(tǒng)函數(shù)發(fā)生系統(tǒng)級超時的情況下將被引發(fā)。 對應(yīng)于 errno ETIMEDOUT。
            四、警告:下列異常被用作警告類別
            1、exception Warning :警告類別的基類。
            2、exception UserWarning:用戶代碼所產(chǎn)生警告的基類。
            3、exception DeprecationWarning:如果所發(fā)出的警告是針對其他 Python 開發(fā)者的,則以此作為與已棄用特性相關(guān)警告的基類。
            4、exception PendingDeprecationWarning:這個類很少被使用,因為針對未來可能的棄用發(fā)出警告的做法并不常見,而針對當前已有的棄用則推薦使用 DeprecationWarning。
            5、exception SyntaxWarning:與模糊的語法相關(guān)的警告的基類。
            6、exception RuntimeWarning:與模糊的運行時行為相關(guān)的警告的基類。
            7、exception FutureWarning:如果所發(fā)出的警告是針對以 Python 所編寫應(yīng)用的最終用戶的,則以此作為與已棄用特性相關(guān)警告的基類。
            8、exception ImportWarning:與在模塊導(dǎo)入中可能的錯誤相關(guān)的警告的基類。
            9、exception UnicodeWarning:與 Unicode 相關(guān)的警告的基類。
            10、exception BytesWarning:與 bytes 和 bytearray 相關(guān)的警告的基類。
            11、exception ResourceWarning:與資源使用相關(guān)的警告的基類。 會被默認的警告過濾器忽略。

            posted on 2021-05-29 14:21 Benjamin 閱讀(277) 評論(0)  編輯 收藏 引用 所屬分類: python

            99久久精品国产综合一区| 老男人久久青草av高清| 久久99免费视频| 久久精品一区二区三区中文字幕| 99久久www免费人成精品| 伊人色综合久久天天网| 久久久久免费看成人影片| 国产福利电影一区二区三区久久久久成人精品综合 | 久久精品国产久精国产果冻传媒| 久久综合给合久久狠狠狠97色| 女人香蕉久久**毛片精品| 久久91精品国产91久| 国产成人香蕉久久久久| 国产精品免费福利久久| 欧美日韩久久中文字幕| 久久本道久久综合伊人| 久久亚洲私人国产精品| 模特私拍国产精品久久| 国内精品免费久久影院| 久久ZYZ资源站无码中文动漫| 亚洲人成无码网站久久99热国产 | 精品国产一区二区三区久久| 伊人情人综合成人久久网小说 | 久久精品国产一区| 午夜人妻久久久久久久久| 色99久久久久高潮综合影院| 久久国产亚洲精品麻豆| 久久国产亚洲精品无码| 久久无码AV中文出轨人妻| 亚洲а∨天堂久久精品9966| 狠狠综合久久综合中文88| 久久久久久综合一区中文字幕 | 久久国产成人精品麻豆| 九九精品99久久久香蕉| 久久久老熟女一区二区三区| 亚洲精品美女久久777777| 久久精品国产亚洲αv忘忧草| 国产精品久久久久久久久软件| 久久亚洲高清综合| 久久精品国产欧美日韩99热| 国产一区二区久久久|