Python特殊字符異常處理示例詳解
在 Python 編程中,程序錯誤主要分為三類:
| 類型 | 說明 |
|---|---|
| 語法錯誤 | 代碼不符合 Python 語法規(guī)范,無法運行 |
| 邏輯錯誤 | 程序能運行,但結(jié)果不符合預期 |
| 運行時錯誤(異常) | 程序在運行過程中發(fā)生的錯誤 |
其中,我們今天重點討論的就是——異常(Exception)。
1. 異常的本質(zhì)
- 異常是程序運行過程中發(fā)生的事件
- 會影響程序的正常執(zhí)行
- 如果不處理,會導致程序崩潰
常見異常示例:
1 / 0
# ZeroDivisionError: division by zero
'2' + 2
# TypeError: can only concatenate str (not "int") to str
open('file.txt')
# FileNotFoundError二、異常的類型
Python 中所有異常都繼承自:
BaseException └── Exception
常見異常類型:
| 異常類型 | 觸發(fā)場景 |
|---|---|
| NameError | 使用未定義變量 |
| TypeError | 數(shù)據(jù)類型不匹配 |
| ValueError | 傳入無效參數(shù) |
| IndexError | 列表索引越界 |
| FileNotFoundError | 文件不存在 |
| ZeroDivisionError | 除以 0 |
三、異常處理核心:try-except
1. 基本語法
try:
可能出錯的代碼
except 異常類型:
出錯后的處理代碼
示例:
try:
x = 10 / 0
except ZeroDivisionError:
print("除數(shù)不能為0!")
2. 捕獲多個異常
try:
print(count)
arr = [1,2,3]
print(arr[5])
except NameError as e:
print("變量未定義:", e)
except IndexError as e:
print("索引越界:", e)
3. 捕獲所有異常
try:
...
except Exception as e:
print("發(fā)生異常:", e)
?? 不推薦濫用:
捕獲所有異常會掩蓋真實問題,只建議在全局保護時使用
四、異常處理進階結(jié)構(gòu)
1. try-except-else
try:
x = 10 / 2
except ZeroDivisionError:
print("錯誤")
else:
print("沒有異常時執(zhí)行")
- try 沒異常 → 執(zhí)行 else
- try 有異常 → 不執(zhí)行 else
2. try-except-finally
try:
f = open("test.txt")
except:
print("出錯")
finally:
print("無論如何都會執(zhí)行")- 關(guān)閉文件
- 釋放資源
- 斷開連接
3. 完整結(jié)構(gòu)
try:
...
except:
...
else:
...
finally:
...
五、主動拋出異常
1. raise 語句
age = 15
if age < 18:
raise ValueError("年齡必須大于18歲")
2. assert 斷言
assert age >= 18, "年齡必須>=18"
- 多用于測試階段
- 條件為 False 時拋出 AssertionError
六、異常的傳遞機制
異常具有“向上傳遞”的特性:
def func1():
return 10 / 0
def func2():
func1()
try:
func2()
except ZeroDivisionError:
print("已捕獲異常")- 下層未處理 → 向上層傳遞
- 直到被捕獲或程序崩潰
七、自定義異常
當內(nèi)置異常無法滿足需求時,可以自己定義:
class AgeError(Exception):
pass
age = 16
if age < 18:
raise AgeError("未滿18歲!")自定義異常的好處:
- 更符合業(yè)務語義
- 便于維護和調(diào)試
八、with 語句與異常
1. 為什么需要 with?
傳統(tǒng)寫法:
file = open("a.txt")
...
file.close()
如果中途報錯,文件可能無法關(guān)閉。
2. 使用 with
with open("a.txt") as f:
print(f.read())
優(yōu)勢:
- 自動釋放資源
- 更安全優(yōu)雅
3. 原理:上下文管理器
支持 with 的對象都實現(xiàn)了:
__enter__()__exit__()
我們也可以自定義:
class MyOpen:
def __enter__(self):
print("進入")
def __exit__(self, type, val, tb):
print("退出")
九、異常處理最佳實踐
? 建議:
- 精準捕獲異常類型
- 不要濫用
except Exception - 關(guān)鍵資源用
finally或with - 合理使用自定義異常
? 不建議:
- 空 except
- 吞掉異常不處理
- 用異常代替邏輯判斷
到此這篇關(guān)于Python特殊字符異常處理示例詳解的文章就介紹到這了,更多相關(guān)Python異常處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用pandas實現(xiàn)Excel轉(zhuǎn)換為CSV文件
在數(shù)據(jù)處理和分析中,我們經(jīng)常需要將 Excel 文件轉(zhuǎn)換為 CSV 格式,這篇文章我們主要來介紹一下python如何使用pandas實現(xiàn)Excel轉(zhuǎn)換為CSV文件,希望對大家有所幫助2024-10-10

