活用異常處理(try-except)

介紹

簡要介紹Python的異常處理(try-except)。

基本語法

Try-except是Python中異常處理的基礎。

作為例子,我們將解釋執行除零時發生 ZeroDivisionError 的情況。
當除以零時,會出現以下錯誤。

print(1 / 0)
# ZeroDivisionError: division by zero

要捕獲此異常,請編寫如下。

try:print(1 / 0)
except ZeroDivisionError:print('Error')
# Error

如果 try 子句中出現異常名稱的錯誤,except異常名稱會中斷 try 子句中的代碼并執行 except 子句中的代碼。
此外,通過使用 except 異常名稱作為變量名,可以在變量中存儲和使用異常對象。 異常對象存儲錯誤消息,可以查看錯誤的詳細信息。

try:print(1 / 0)
except ZeroDivisionError as e:print(e)print(type(e))
# division by zero
# <class 'ZeroDivisionError'>

還可以通過指定基類來捕獲。 例如,ZeroDivisionError 的基類是 ArithmeticError。 該變量存儲實際發生的派生類異常對象。

try:print(1 / 0)
except ArithmeticError as e:print(e)print(type(e))
# division by zero
# <class 'ZeroDivisionError'>

對多個異常進行不同的處理

如果要捕獲多個異常并以不同的方式處理它們,請為每個異常設置 except 。

def divide(a, b):try:print(a / b)except ZeroDivisionError as e:print('catch ZeroDivisionError:', e)except TypeError as e:print('catch TypeError:', e)divide(1, 0)
# catch ZeroDivisionError: division by zerodivide('a', 'b')
# catch TypeError: unsupported operand type(s) for /: 'str' and 'str'

對多個異常執行相同的操作

通過在元組中指定異常名稱,可以使用一個 except 子句捕獲多個異常。

def divide(a, b):try:print(a / b)except (ZeroDivisionError, TypeError) as e:print(e)divide(1, 0)
# division by zerodivide('a', 'b')
# unsupported operand type(s) for /: 'str' and 'str'

捕獲所有異常并執行相同的處理

如果要捕獲所有異常,則無需指定異常名稱即可編寫。

try:print(1 / 0)
except:print('Error')
# Error

如果有多個 except 子句,則只能在最后一個 except 子句中省略異常名稱。 (就像 if 語句中的 elifelse 一樣)

正常結束處理:else

可以指定在 try 子句結束且 else 子句中不發生異常的情況下要執行的處理。

def divide(a, b):try:print(a / b)except ZeroDivisionError as e:print('catch ZeroDivisionError:', e)else:print('finish (no error)')divide(1, 2)
# 0.5
# finish (no error)divide(1, 0)
# catch ZeroDivisionError: division by zero

處理總是在終止時執行:finally

可以在finally子句中指定始終在最后執行的過程,無論是否發生異常。

def divide(a, b):try:print(a / b)except ZeroDivisionError as e:print('catch ZeroDivisionError:', e)finally:print('all finish')divide(1, 2)
# 0.5
# all finishdivide(1, 0)
# catch ZeroDivisionError: division by zero
# all finish

概括

  • except 異常名稱:捕獲特定異常
  • except 異常名稱作為變量名稱:將異常對象存儲在變量中
  • except可以設置多個例外。
  • 如果 except 中沒有指定異常名稱,則捕獲所有異常。
try:print(1 / 0)
except: # 如果try中出現異常print('Error')
else: # 如果try中沒有出現異常print('finish (no error)')
finally: # 無論異常如何發生,始終執行print('all finish')

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214354.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214354.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214354.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

藍牙配對、連接和刪除匯總

目的&#xff1a;處理PC連接藍牙設備的配對、連接和刪除操作&#xff0c;以及常見故障。 命令行配對藍牙設備并連接 要求&#xff1a;配對BLUET043藍牙&#xff0c;密碼為4444&#xff0c;然后連接該藍牙。操作步驟如下&#xff1a; Step1.下載 修復工具&#xff0c;然后安裝…

利用python編寫簡易POC腳本

POC&#xff1a;概念證明&#xff0c;即概念驗證&#xff08;英語&#xff1a;Proof of concept&#xff0c;簡稱POC&#xff09;是對某些想法的一個較短而不完整的實現&#xff0c;以證明其可行性&#xff0c;示范其原理&#xff0c;其目的是為了驗證一些概念或理論。 聲明&a…

三哥的黑科技,印度發布無線加熱服裝專利,冬季神器要來了

眾所周知風和自由在冬天是不存在的&#xff0c;冬天只剩下冰冷的像刀子一樣的風刮在你的臉上&#xff0c;哪怕穿的很厚&#xff0c;戴上全盔&#xff0c;也無法阻擋冰冷的風帶走你身體溫度&#xff0c;如果穿的特別多&#xff0c;騎車時候的舒適感和穿脫衣物的繁瑣也是一大頭疼…

【MySQL系列】Centos安裝MySQL

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

vim常用鍵位總結

1、移動光標 按鍵作用h或←光標向左移動一個字符j或↓光標向下移動一個字符k或↑光標向上移動一個字符l或→光標向右移動一個字符Ctrl f或Page Down屏幕向下移動一頁&#xff08;常用&#xff09;Ctrl b或Page Up屏幕向上移動一頁&#xff08;常用&#xff09;Ctrl d屏幕向…

Kafka使用總結

1、Kafka是何如做到高性能的&#xff1f; a、消息批處理減少網絡通信開銷&#xff0c;提升系統吞吐能力&#xff08;先攢一波&#xff0c;消息以“批”為單位進行處理&#xff09; 生產端&#xff1a;無論是同步發送還是異步發送&#xff0c;Kafka都不會立即就把這條消息發送出…

【C++】算法庫(復制操作、交換操作、變換操作)

C算法庫 文章目錄 C算法庫復制操作copy , copy_ifcopy_ncopy_backward 交換操作swapswap_rangesiter_swap 變換操作transformreplacereplace_copy replace_copy_if 算法庫提供大量用途的函數&#xff08;例如查找、排序、計數、操作&#xff09;&#xff0c;它們在元素范圍上操…

java--StringBuilder、StringBuffer、StringJoiner

1.StringBuilder ①StringBuilder代表可變字符串對象&#xff0c;相當于是一個容器&#xff0c;它里面裝的字符串是可以改變的&#xff0c;就是用來操作字符串的。 ②好處&#xff1a;StringBuilder比String更適合做字符串的修改操作&#xff0c;效率會比更高&#xff0c;代碼…

Java入門:EditPlus的安裝與配置講解

1. 前言 Java是一種面向對象的編程語言&#xff0c;廣泛應用于各種平臺和設備。在Java開發過程中&#xff0c;一個好的集成開發環境&#xff08;IDE&#xff09;是非常重要的。EditPlus是一款簡單易用的文本編輯器&#xff0c;它提供了一些方便的功能來支持Java開發。本文將介…

【開源】基于JAVA的木馬文件檢測系統

項目編號&#xff1a; S 041 &#xff0c;文末獲取源碼。 \color{red}{項目編號&#xff1a;S041&#xff0c;文末獲取源碼。} 項目編號&#xff1a;S041&#xff0c;文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 木馬分類模塊2.3 木…

Leo贈書活動-13期 【以企業架構為中心的SABOE數字化轉型五環法】文末送書

Leo贈書活動-13期 【以企業架構為中心的SABOE數字化轉型五環法】文末送書 ?作者簡介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;熱愛Java后端開發者&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;Leo的博客…

記錄 | xshell輸出錯亂解決

輸出錯亂問題&#xff1a; 解決方法&#xff1a;

VS Code使用 CMake 或 Makefile管理C++多文件編譯

VS Code使用 CMake 或 Makefile管理C多文件編譯 一、Cmake方式1、文件結構2、構建項目 二、Makefile方式1、文件結構2、Makefile3、構建項目 三、附件示例中使用到的文件及代碼 使用 CMake 或 Makefile 是更加標準和靈活的方法來管理多文件編譯。以下是一個簡單的示例&#xff…

80個常用shell命令及簡單用法

Shell命令是Linux和Unix系統中的基礎&#xff0c;用于完成各種操作&#xff0c;如文件管理、程序執行、文本處理等。下面列舉一些常用的Shell命令&#xff0c;并詳細解釋它們的功能及應用場景&#xff1a; ls - 列出目錄內容 功能&#xff1a;列出指定目錄中的文件和目錄。應用…

智能優化算法應用:基于郊狼算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于郊狼算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于郊狼算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.郊狼算法4.實驗參數設定5.算法結果6.參考文獻7.MA…

Mybatis增刪改查基礎

MyBatis可根據查詢的結果類型、查詢條件的不同進行統一處理。 1 查詢數據 1.1 根據查詢數據條數來分析不同的情況 1.1.1 查詢單條數據 可以通過實體類、list集合、map等處理查詢結果。 通過實體類查詢單條數據 User queryUserById(Param("id") Integer id);<…

C、C++、C#的區別概述

C、C、C#的區別概述 https://link.zhihu.com/?targethttps%3A//csharp-station.com/understanding-the-differences-between-c-c-and-c/文章翻譯源于此鏈接 01、C語言 ? Dennis Ritchie在1972年創造了C語言并在1978年公布。Ritchie設計C的初衷是用于開發新版本的Unix。在那之…

express框架使用

一、express介紹 express 是一個基于 Node.js 平臺的極簡、靈活的 WEB 應用開發框架&#xff0c;簡單來說&#xff0c;express 是一個封裝好的工具包&#xff0c;封裝了很多功能&#xff0c;便于我們開發 WEB 應用&#xff08;HTTP 服務&#xff09; 二、express 使用 2.1 e…

【組合數學】遞推關系

目錄 1. 遞推關系建立2. 常系數齊次遞推關系的求解3. 常系數非齊次遞推關系的求解4. 迭代法 1. 遞推關系建立 給定一個數的序列 f ( 0 ) , f ( 1 ) , . . . , f ( n ) , . . . , f (0), f(1), ..., f(n ),... , f(0),f(1),...,f(n),..., 若存在整數 n 0 n_0 n0? &#xff…