<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                通過編程處理選擇的異常是可行的。看一下下面的例子:它會一直要求用戶輸入,直到輸入一個合法的整數為止,但允許用戶中斷這個程序(使用?Control-C?或系統支持的任何方法)。注意:用戶產生的中斷會引發一個?KeyboardInterrupt?異常。 ~~~ >>> while True: ... try: ... x = int(input("Please enter a number: ")) ... break ... except ValueError: ... print("Oops! That was no valid number. Try again...") ... ~~~ try?語句按如下方式工作。 * 首先,執行?_try_?子句 (在?try?和?except?關鍵字之間的部分)。 * 如果沒有異常發生,?_except_?子句 在?try?語句執行完畢后就被忽略了。 * 如果在 try 子句執行過程中發生了異常,那么該子句其余的部分就會被忽略。如果異常匹配于except?關鍵字后面指定的異常類型,就執行對應的except子句。然后繼續執行?try?語句之后的代碼。 * 如果發生了一個異常,在?except?子句中沒有與之匹配的分支,它就會傳遞到上一級?try?語句中。如果最終仍找不到對應的處理語句,它就成為一個?_未處理異常_,終止程序運行,顯示提示信息。 一個?try?語句可能包含多個 except 子句,分別指定處理不同的異常。至多只會有一個分支被執行。異常處理程序只會處理對應的 try 子句中發生的異常,在同一個?try?語句中,其他子句中發生的異常則不作處理。一個 except 子句可以在括號中列出多個異常的名字,例如: ~~~ ... except (RuntimeError, TypeError, NameError): ... pass ~~~ 最后一個 except 子句可以省略異常名稱,以作為通配符使用。你需要慎用此法,因為它會輕易隱藏一個實際的程序錯誤!可以使用這種方法打印一條錯誤信息,然后重新拋出異常(允許調用者處理這個異常): ~~~ import sys try: f = open('myfile.txt') s = f.readline() i = int(s.strip()) except IOError as err: print("I/O error: {0}".format(err)) except ValueError: print("Could not convert data to an integer.") except: print("Unexpected error:", sys.exc_info()[0]) raise ~~~ try?...?except?語句可以帶有一個?_else子句_,該子句只能出現在所有 except 子句之后。當 try 語句沒有拋出異常時,需要執行一些代碼,可以使用這個子句。例如: ~~~ for arg in sys.argv[1:]: try: f = open(arg, 'r') except IOError: print('cannot open', arg) else: print(arg, 'has', len(f.readlines()), 'lines') f.close() ~~~ 使用?else?子句比在?try?子句中附加代碼要好,因為這樣可以避免?try?...?except?意外的截獲本來不屬于它們保護的那些代碼拋出的異常。 發生異常時,可能會有一個附屬值,作為異常的?_參數_?存在。這個參數是否存在、是什么類型,依賴于異常的類型。 在異常名(列表)之后,也可以為 except 子句指定一個變量。這個變量綁定于一個異常實例,它存儲在?instance.args?的參數中。為了方便起見,異常實例定義了?__str__()?,這樣就可以直接訪問過打印參數而不必引用?.args。這種做法不受鼓勵。相反,更好的做法是給異常傳遞一個參數(如果要傳遞多個參數,可以傳遞一個元組),把它綁定到 message 屬性。一旦異常發生,它會在拋出前綁定所有指定的屬性。 ~~~ >>> try: ... raise Exception('spam', 'eggs') ... except Exception as inst: ... print(type(inst)) # the exception instance ... print(inst.args) # arguments stored in .args ... print(inst) # __str__ allows args to be printed directly, ... # but may be overridden in exception subclasses ... x, y = inst.args # unpack args ... print('x =', x) ... print('y =', y) ... ('spam', 'eggs') ('spam', 'eggs') x = spam y = eggs ~~~ 對于那些未處理的異常,如果一個它們帶有參數,那么就會被作為異常信息的最后部分(“詳情”)打印出來。 異常處理器不僅僅處理那些在 try 子句中立刻發生的異常,也會處理那些 try 子句中調用的函數內部發生的異常。例如: ~~~ >>> def this_fails(): ... x = 1/0 ... >>> try: ... this_fails() ... except ZeroDivisionError as err: ... print('Handling run-time error:', err) ... Handling run-time error: int division or modulo by zero ~~~
                  <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>

                              哎呀哎呀视频在线观看