乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Pythontryexceptelse詳解

       碼農9527 2021-09-22

          在原本的tryexcept結構的基礎上,Python異常處理機制還提供了一個else塊,也就是原有tryexcept語句的基礎上再添加一個else塊,即tryexceptelse結構。

          使用else包裹的代碼,只有當try塊沒有捕獲到任何異常時,才會得到執(zhí)行;反之,如果try塊捕獲到異常,即便調用對應的except處理完異常,else塊中的代碼也不會得到執(zhí)行。

          舉個例子:

      try:
       result = 20 / int(input('請輸入除數:'))
       print(result)except ValueError:
       print('必須輸入整數')except ArithmeticError:
       print('算術錯誤,除數不能為 0')else:
       print('沒有出現異常')
      print("繼續(xù)執(zhí)行")12345678910復制代碼類型:[python]

          可以看到,在原有tryexcept的基礎上,我們?yōu)槠涮砑恿薳lse塊?,F在執(zhí)行該程序:

      請輸入除數:45.0沒有出現異常
      繼續(xù)執(zhí)行1234復制代碼類型:[python]

          如上所示,當我們輸入正確的數據時,try塊中的程序正常執(zhí)行,Python解釋器執(zhí)行完try塊中的程序之后,會繼續(xù)執(zhí)行else塊中的程序,繼而執(zhí)行后續(xù)的程序。

          讀者可能會問,既然Python解釋器按照順序執(zhí)行代碼,那么else塊有什么存在的必要呢?直接將else塊中的代碼編寫在tryexcept塊的后面,不是一樣嗎?

          當然不一樣,現在再次執(zhí)行上面的代碼:

      請輸入除數:a
      必須輸入整數
      繼續(xù)執(zhí)行123復制代碼類型:[python]

          可以看到,當我們試圖進行非法輸入時,程序會發(fā)生異常并被try捕獲,Python解釋器會調用相應的except塊處理該異常。但是異常處理完畢之后,Python解釋器并沒有接著執(zhí)行else塊中的代碼,而是跳過else,去執(zhí)行后續(xù)的代碼。

          也就是說,else的功能,只有當try塊捕獲到異常時才能顯現出來。在這種情況下,else塊中的代碼不會得到執(zhí)行的機會。而如果我們直接把else塊去掉,將其中的代碼編寫到tryexcept的后面:

      try:
       result = 20 / int(input('請輸入除數:'))
       print(result)except ValueError:
       print('必須輸入整數')except ArithmeticError:
       print('算術錯誤,除數不能為 0')
      print('沒有出現異常')
      print("繼續(xù)執(zhí)行")123456789復制代碼類型:[python]

          程序執(zhí)行結果為:

      請輸入除數:a
      必須輸入整數
      沒有出現異常
      繼續(xù)執(zhí)行1234復制代碼類型:[python]

          可以看到,如果不使用else塊,try塊捕獲到異常并通過except成功處理,后續(xù)所有程序都會依次被執(zhí)行。

        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多