【Python實戰系列】一文徹底搞懂異常捕獲及處理(理論+源碼)

一、問題

????異常處理是Python中一種用于處理程序運行時錯誤的機制。在編寫代碼時,可能會出現各種不可預測的情況,例如除零錯誤、文件不存在、網絡連接問題等等。為了確保程序能夠在出現錯誤時正常運行,您可以使用異常處理機制來捕獲和處理這些異常。Python中的異常處理使用tryexcept語句來實現。

二、try/except

捕獲指定異常

try:# 可能引發異常的代碼result = 10 / 0  # 除零錯誤
except ZeroDivisionError:# 處理異常的代碼print("除零錯誤發生")

在這個示例中,try塊中包含可能引發異常的代碼,如果發生除零錯誤,將會觸發ZeroDivisionError異常,然后控制流將轉移到except塊中,其中包含了處理異常的代碼。

捕獲所有異常

try:# 可能引發異常的代碼result = 10 / 0  # 除零錯誤
except:# 處理異常的代碼print("異常發生")

在這個示例中,try塊中包含可能引發異常的代碼,如果發生異常錯誤,然后控制流將轉移到except塊中,其中包含了處理異常的代碼。

捕獲多個指定異常

try:<語句>
except (<異常名1>, <異常名2>, ...):print('異常說明')

在這個示例中,一個?except?同時處理多個異常,不區分異常的優先級且對所有類型的異常采取同樣的處理。

try:<語句>
except <異常名1>:print('異常說明1')
except <異常名2>:print('異常說明2')
except <異常名3>:print('異常說明3')

在這個示例中,執行 try 下的語句,如果引發異常,則執行過程會跳到第一個 except 語句。如果第一個 except 中定義的異常與引發的異常匹配,則執行該 except 中的語句。如果引發的異常不匹配第一個 except,則會搜索第二個 except,依次類推。

三、try/except/else

? ??在tryexcept之間添加一個else塊,其中包含在沒有異常發生時要執行的代碼。

try:<語句>
except <異常名1>:print('異常說明1')
except <異常名2>:print('異常說明2')
else:<語句> # try語句中沒有異常則執行此段代碼

四、try/except/else/finally

????在tryexcept之后添加一個finally塊,其中包含無論是否發生異常都要執行的代碼。

str1 = 'hello world'
try:int(str1)
except IndexError as e:pass
except KeyError as e:print(e)
except ValueError as e:print(e)
else:print('try內沒有異常')
finally:print('無論異常與否,都會執行我')

五、拋出自定義異常try/raise

自定義拋出異常

try:age = int(input("請輸入年齡:"))if age < 0:raise ValueError("年齡不能為負數")
except ValueError as e:print(e)

上述代碼中,如果輸入的年齡為負數,將拋出自定義的ValueError異常。

本人讀研期間發表5篇SCI數據挖掘相關論文,現在某研究院從事數據算法相關科研工作,對Python有一定認知和理解,會結合自身科研實踐經歷不定期分享關于python、機器學習、深度學習等基礎知識與應用案例。

致力于只做原創,以最簡單的方式理解和學習,關注我一起交流成長。

1、關注“數據雜壇”公眾號,即可在后臺聯系我獲取相關數據集和源碼。

2、關注“數據雜壇”公眾號,點擊“領資料”即可免費領取資料書籍。

3、有論文指導相關需求,點擊“聯系我”添加作者微信直接交流。

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

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

相關文章

K8S學習指南(5)-k8s核心對象namespace

文章目錄 前言什么是Namespace&#xff1f;Namespace的類型創建Namespace使用kubectl創建Namespace示例 切換Namespace查看Namespace在Namespace中部署應用程序使用Namespace進行資源隔離Namespace的權限控制刪除Namespace總結 前言 Kubernetes&#xff08;簡稱K8s&#xff09…

前端知識(十六)——js獲取時間戳方法

1、獲取當前時間 let date new Date() 2、將字符串或者對象直接轉化成時間戳 方法&#xff1a;Date.parse() 注意&#xff1a;不推薦這種方法&#xff0c;毫秒級別的數值被轉化為000 3、通過valueOf()函數返回指定的原始值獲得精準的時間戳值 方法&#xff1a;valueOf()…

git自動更新功能

確認權限 因為一般Linux系統網頁用的www 或 www-data用戶和用戶組,所以要實現自動來去,首先要在www用戶權限下生成ssh密鑰,不然沒有權限,其次就是,要把用root用戶拉去的代碼,批量改成www用戶 1. 給www權限 vi /etc/sudoers www ALL=(ALL) NOPASSWD:/bin/chow…

memset的用法

語法 1.引用所需頭文件 #include<string.h> 2.聲明 void * memset ( void * ptr, int value, size_t num ); ptr 表示要設置的數據的起始地址。如果是要設置整個數組的數據&#xff0c;那ptr就是數組名&#xff08;數組首元素的地址&#xff09; value 表示要設置的值…

【學習筆記】lyndon分解

摘抄自quack的ppt。 這部分和 s a sa sa的關聯比較大&#xff0c;可以加深對 s a sa sa的理解。 Part 1 如果字符串 s s s的字典序在 s s s以及 s s s的所有后綴中是最小的&#xff0c;則稱 s s s是一個 lyndon \text{lyndon} lyndon串。 lyndon \text{lyndon} lyndon分解&a…

c++ 類和對象-封裝意義一

屬性和行為作為整體 示例一&#xff1a;設計一個圓類&#xff0c;求圓的周長 #include<iostream> using namespace std; //圓周率 const double PI 3.14; //設計一個圓類&#xff0c;求圓的周長 //圓求周長的公式&#xff1a;2*PI*半徑 //class代表設計一個類&#xf…

熔池處理Tecplot 360 和CFD-Post做出一樣的效果

熔池處理Tecplot 360 和CFD-Post做出一樣的效果 效果展示詳細講述Tecplot 360實現過程分析實現過程第一步實現過程第二步界面美化注意點效果展示 詳細講述Tecplot 360實現過程 分析 這里主要是將體積分數大于0.5的區域抽取出來,然后顯示溫度場,所以這里主要考慮下面連個思考…

PCL 三維點云中求解圓的三維方程

一、概述 在給出的三維點云中求解擬合圓的三維方程 二、代碼示例 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/sample_consensus/ransac.h> #include <pcl/sample_consensus/sac_model_circle3D.h> // 擬

【貪心算法】 Opponents

這道題寫偽代碼就好了&#xff01; Description Arya has n opponents in the school. Each day he will fight with all opponents who are present this day. His opponents have some fighting plan that guarantees they will win, but implementing this plan requires pr…

【開源】基于Vue+SpringBoot的固始鵝塊銷售系統

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

Mybatis-plus中wrapper的區別

在MyBatis-Plus框架中,LambdaQueryWrapper 和 QueryWrapper 是用于構建查詢條件的兩個主要類。它們都是查詢條件構造器,用于在查詢中生成 WHERE 子句的條件。 QueryWrapper QueryWrapper 是 MyBatis-Plus 3.x 中引入的條件構造器。它的主要特點是使用字符串作為字段名,并支…

python 數字保留小數位數 結果是字符串

precision 2 f{px :.{precision}f} # 自定義動態 f{x:.2f} 數字 轉 字符串 保留dot后面的位數 結果 字符串

從關鍵新聞和最新技術看AI行業發展(2023.11.20-12.3第十一期) |【WeThinkIn老實人報】

Rocky Ding 公眾號&#xff1a;WeThinkIn 寫在前面 【WeThinkIn老實人報】旨在整理&挖掘AI行業的關鍵新聞和最新技術&#xff0c;同時Rocky會對這些關鍵信息進行解讀&#xff0c;力求讓讀者們能從容跟隨AI科技潮流。也歡迎大家提出寶貴的優化建議&#xff0c;一起交流學習&…

MySQL概述-安裝與啟動

數據庫相關概念 MySQL數據庫 下載地址 MySQL :: Download MySQL Installer (Archived Versions) 啟動方法 啟動密令&#xff1a;net start mysql80 停止密令&#xff1a;net stop mysql80 客戶端鏈接方法 注意用系統自帶的命令行工具執行指令需要設置環境在高級系統設置中…

解決使用pnpm安裝時Sharp模塊報錯的方法

在使用pnpm進行項目依賴安裝的過程中&#xff0c;有時候會遇到Sharp模塊報錯的情況。Sharp是一個用于處理圖像的Node.js模塊&#xff0c;但它的安裝可能會因為各種原因而失敗&#xff0c;導致項目無法正常啟動。本文將介紹這個問題的方法。 問題描述 解決方法 在命令行分別輸…

Linux-幫助命令的使用和練習(type、man、help、info詳解)

目錄 5.3.1 type-判斷是否為內部命令 5.3.2 man-查看詳細文檔 5.3.3 help-查看shell內部命令的幫助信息 5.3.4 --help-查看系統外部命令幫助信息 5.3.5 info-查看info格式的幫助指令 5.3.6 /usr/share/doc-存儲軟件包的文檔信息 平時我們看到的命令大多數都可以查看幫助文…

NTP反射放大攻擊

文章目錄 什么是NTPNTP反射放大攻擊解決方案搭建NTP服務器部署服務器端windows NTP命令行本機測試 部署客戶端ntpdatechrony 實驗Python利用腳本 什么是NTP 基于UDP協議的NTP&#xff08;網絡時間協議&#xff09;&#xff1a;使網絡中各個計算機時間同步的一種協議 用途&…

vue3-vite前端快速入門教程 vue-element-admin

Vue3快速入門學習 初始化項目 # 創建項目 npm create vitelatest my-vue-app -- --template vue # 安裝依賴 npm i # 運行 npm run dev 模板語法 文本插值? 最基本的數據綁定形式是文本插值&#xff0c;它使用的是“Mustache”語法 (即雙大括號)&#xff1a; <span&g…

【數據結構】——排序篇(中)

前面我們已經了解了幾大排序了&#xff0c;那么我們今天就來再了解一下剩下的快速排序法&#xff0c;這是一種非常經典的方法&#xff0c;時間復雜度是N*logN。 快速排序法&#xff1a; 基本思想為&#xff1a;任取待排序元素序列中的某元素作為基準值&#xff0c;按照該排序碼…

C++ queue 和priority_queue

目錄 1.什么是queue 2.模擬實現 3.仿函數 模板參數Compare 仿函數 4.什么是priority_queue 模擬實現 1.什么是queue 1.隊列是一種容器適配器&#xff0c;專門用于在FIFO上下文(先進先出)中操作&#xff0c;其中從容器一端插入元素&#xff0c;另一端提取元素。 2.隊列作為…