<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Python 3 中的異常處理 > 原文: [https://javabeginnerstutorial.com/python-tutorial/exception-handling-python-3-5/](https://javabeginnerstutorial.com/python-tutorial/exception-handling-python-3-5/) 在本文中,我將向您介紹異常處理。 在本系列的前幾篇文章中,我們使用異常處理來介紹一些罕見的異常情況(還記得*猜數字*游戲嗎?),現在是時候解釋如何在自己的應用中以及在什么時候使用它了。 去做吧。 ## 什么是異常? 異常是在腳本/應用執行期間發生的錯誤。 顧名思義,異常很少發生,它們是常規工作流規則的異常。 在 Python 中,異常稱為錯誤,使開發人員從其他語言進行遷移會造成混淆。 基本錯誤類是`Exception`,其他異常是該類的子類-這使事情更加混亂。 每次引發異常時,它都會進入調用棧,直到代碼塊對其進行處理。 如果沒有代碼可以處理該異常,則解釋器將接管工作,寫出討厭的錯誤消息并終止正在運行的腳本。 自然地,在錯誤處理塊中,您可以引發一個新異常或將當前異常拋出到頂部。 這是 Web 應用中的常見做法,在 Web 應用中,您希望記錄服務調用導致了異常,但是您也想通過用戶界面通知用戶錯誤。 為此,您必須轉發異常。 ## 捕捉異常 您可能還記得,在*猜數字*游戲中,我們已經使用了異常處理。 處理異常的一般規則是您需要一個`try-except`塊: ```py try: block of code which might raise an error except: exception handling ``` 如您所見,可能引發異常的代碼進入`try`塊。 然后,錯誤處理將在`except`塊中發生。 **但是**使用普通格式,但以下情況除外:在大多數情況下,如上例所示,這是一種不好的做法。 這是因為通過這種方式,您可以處理給定塊中的所有異常,有時這超出了您的期望。 讓我們創建一個簡單的示例,在該示例中,我們調用一個總是引發異常的函數: ```py def error_function(): return int('nine') ``` 如果我們在交互式解釋器中定義此函數并調用它,則會出現異常: ```py >>> error_function() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in error_function ValueError: invalid literal for int() with base 10: 'nine' ``` 現在,我們將此函數調用包裝到`try-except`塊中: ```py >>> try: ... error_function() ... except: ... print('an exception occurred') ... ``` 發生異常 在上面的示例中,我們捕獲了`try`塊中可能引發的所有異常。 但是,正如我提到的那樣,這是一個不好的做法。 最好捕獲那些我們知道它們可能會來的異常,并讓真正意外的異常上升,直到它們被處理為止。 為此,我們一開始只會捕獲語法錯誤: ```py >>> try: ... error_function() ... except SyntaxError: ... print('an exception occurred') ... Traceback (most recent call last): File "<stdin>", line 2, in <module> File "<stdin>", line 2, in error_function ValueError: invalid literal for int() with base 10: 'nine' ``` 如您所見,在這種情況下,異常由解釋器處理。 因此,更改異常處理以處理`ValueErrors`: ```py >>> try: ... error_function() ... except ValueError: ... print('an exception occurred') ... ``` an exception occurred ### 寫出異常 有時僅捕獲異常是不夠的,但是您必須記錄錯誤原因(有時記錄到日志文件或控制臺中),以使用戶或應用管理員知道正在發生的情況。 為此,您可以按如下所示編寫先前的異常處理塊: ```py >>> try: ... error_function() ... except ValueError as e: ... print('an exception occurred:', e) ... ``` 發生異常:以`int()`為基數 10 的無效文字:“`nine`” 如您在上面的示例中看到的,您可以掌握異常對象本身,并將其寫入控制臺。 如果執行此操作,則會顯示異常消息。 ## 引發異常 我說的是提出異常。 如果您有耐心并且沒有用 Google 搜索該怎么做,那么時機已到。 好吧,與我所指的一樣: 引發異常 這就引發了一個普遍的異常,對此沒有太多了解。 您可以在交互式解釋器中嘗試一下: ```py >>> raise Exception Traceback (most recent call last): File "<stdin>", line 1, in <module> Exception >>> raise Exception("MY custom error") Traceback (most recent call last): File "<stdin>", line 1, in <module> Exception: MY custom error ``` 如您所見,您可以提供一條消息作為異常的構造器參數,并在解釋器處理錯誤時顯示此消息-或者您可以如上一節所述將其提取。 ## 總結 有時會發生異常。 在某些情況下,您或者想要處理它們,有時只希望腳本/應用停止執行。 在本文中,我們研究了如何捕獲和處理異常以及如何將根本原因打印到用戶的方式。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看