Python異常處理
異常
異常產生,檢測到錯誤且直譯器認為是異常,丟擲異常;異常處理,截獲異常,忽略或終止程式處理異常。
首先給出兩個實驗txt檔案,內容如下:
try…except… |
捕獲指定型別的異常
try:
a
except NameError as e: #捕獲NameError類的異常
print('catch Error:',e)
print('exec over')
b=0
try:
b
except NameError as e:
print('catch Error:',e)
print('exec over')
捕獲所有型別的異常
try:
undefvar #之前沒定義過的變數
except: #捕獲所有異常
print('catch error')
#except Exception as e:
#Exception可以將所有的異常包括在內;將異常賦予變數e
指定捕獲異常型別與實際觸發異常型別不同
try:
undefvar #之前沒定義過的變數
except FileNotFoundError as e: #捕獲FileNotFoundError異常
print('catch error',e)
try:
open('test1.txt') #開啟之前不存在檔案
except FileNotFoundError as e: #捕獲FileNotFoundError異常
print('catch error',e)
捕獲多種異常型別
try:
f=open('one.txt')
line=f.read(2) #讀取檔案one.txt裡的前兩個字元
numd=int(line)
print('read num=%d' % numd)
except FileNotFoundError as e:
print('catct FileNotFoundError',e)
except ValueError as e:
print('ValueError',e)
try…except…else… |
try語句捕獲到異常執行except語句
try語句沒有捕獲到異常執行else語句
try:
f=open('changeone.txt')
line=f.read(2) #讀取檔案changeone.txt裡的前兩個字元
numd=int(line)
print('read num=%d' % numd)
except FileNotFoundError as e:
print('catct FileNotFoundError',e)
except ValueError as e:
print('ValueError',e)
else:
print('No Error')
try:
f=open('changeone1.txt')
line=f.read(2) #讀取檔案changeone.txt裡的前兩個字元
numd=int(line)
print('read num=%d' % numd)
except FileNotFoundError as e:
print('catct FileNotFoundError',e)
except ValueError as e:
print('ValueError',e)
else:
print('No Error')
try…finally… |
如果try沒有捕獲到異常,先執行finally後的程式碼塊;
如果try捕獲到異常,先執行finally後的程式碼塊,由python直譯器處理捕獲到的異常
try-finally語句:無論是否檢測到異常,都會執行finally程式碼;不是為解釋異常而設計,主要是做一些清理工作,關閉檔案或釋放系統資源
try:
f=open('one.txt')
print(int(f.read()))
finally:
print('close file')
f.close()
組合 |
try-except-finally
若try沒有捕獲到異常,執行完try程式碼塊後,執行finally
若try捕獲到異常,首先執行except處理錯誤,然後執行finally
try:
ft=open('changeone.txt')
line=ft.read(2) #讀取檔案changeone.txt裡的前兩個字元
numd=int(line)
print('read num=%d' % numd)
except FileNotFoundError as e:
print('catct FileNotFoundError',e)
except ValueError as e:
print('ValueError',e)
finally:
print('close file')
ft.close()
try:
ff=open('changeone1.txt') #open時發生錯誤,f變數定義失敗
line=ff.read(2)
numd=int(line)
print('read num=%d' % numd)
except FileNotFoundError as e:
print('catct FileNotFoundError',e)
except ValueError as e:
print('ValueError',e)
finally:
print('close file')
ff.close()
try:
ff=open('changeone1.txt') #open時發生錯誤,f變數定義失敗
line=ff.read(2)
numd=int(line)
print('read num=%d' % numd)
except FileNotFoundError as e:
print('catct FileNotFoundError',e)
except ValueError as e:
print('ValueError',e)
finally:
try:
print('close file')
ff.close()
except NameError as e: #捕獲變數ff的錯誤
print('NameError:,',e)
try-except-else-finally
若try沒有捕獲到異常,執行完try程式碼段後,執行else程式碼段,最後執行finally
若try捕獲到異常,首先執行except處理錯誤,然後執行finally
try:
feef=open('changeone.txt') #open時正常讀入,沒發生錯誤
line=feef.read(2)
numd=int(line)
print('read num=%d' % numd)
except FileNotFoundError as e:
print('catct FileNotFoundError',e)
except ValueError as e:
print('ValueError',e)
else:
print('No Error')
finally:
try:
print('close file')
feef.close()
except NameError as e:
print('NameError:,',e)
with語句 |
with語句,作用等同於try-except-finally語句的
import os
try:
with open('one.txt') as fw:
print('in with fw.read:',fw.read())
fw.seek(-5,os.SEEK_SET) #出現異常
except ValueError as e:
print('in with catch ValueError:',e)
print('with:',fw.closed)
相關文章
- Python——異常處理Python
- python異常捕捉處理Python
- Python Selenium異常處理Python
- python try異常處理Python
- python應用:異常處理Python
- Python基礎 -- 異常處理Python
- python異常處理之returnPython
- Python錯誤處理和異常處理(二)Python
- 異常篇——異常處理
- python 基礎之異常處理Python
- Python進階08 異常處理Python
- 異常處理
- Python 簡明教程 --- 23,Python 異常處理Python
- python異常處理中finally的作用Python
- JSP 異常處理如何處理?JS
- 異常-throws的方式處理異常
- React 異常處理React
- JS異常處理JS
- oracle異常處理Oracle
- ThinkPHP 異常處理PHP
- JavaScript 異常處理JavaScript
- JAVA 異常處理Java
- 異常的處理
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- Java 異常處理Java
- Abp 異常處理
- JAVA異常處理Java
- 08、異常處理
- SpringMVC異常處理SpringMVC
- 什麼是異常?python處理異常的方式有幾種?Python
- 異常處理機制(二)之異常處理與捕獲
- Python異常處理回顧與總結Python
- 2.1.3 Python物件導向之異常處理Python物件
- Python學習之 異常處理詳解Python
- Python穩基修煉之異常處理Python
- 說說在 Python 中如何處理異常Python