1. 程式人生 > >「學習筆記——Python」Python 的錯誤和異常處理

「學習筆記——Python」Python 的錯誤和異常處理

可以自己編寫程式來處理異常,比如下面這個例子,它會返回異常,直到使用者輸入有效資料為止。

>>> while True:
...     try:
...         x = int(raw_input("Please enter a number: "))
...         break
...     except ValueError:
...         print "Oops! That was no valid number. Try again..."
... 
Please enter a number: x
Oops! That was no valid number. Try again...
Please enter a number: 32x
Oops! That was no valid number. Try again...
Please enter a number: 038
  • 使用 try 和 except ExceptionName 來處理異常
  • 如果沒有異常產生,except 段會被跳過
  • 如果某處有異常產生,後面的語句會被跳過,如果產生的異常型別和except後的型別一致,except後的語句會被執行
  • 如果發生異常,但和except後的型別不一致,異常會傳遞到try語句外面,如果沒有相應處理,那麼就會打印出像上 一個例子那樣的資訊。

一個try語句可能有多個except與之對應,分別處理不同型別的異常,最多隻有一種處理會被執行。一個except可以包含多 個型別名,比如:

... except (RuntimeError, TypeError, NameError):
...     pass

注意上面的三種異常型別,必須用括號把它們括起來,因為在現代python中, except ValueError, e 的意思是 except ValueError as e:(後面會講這是什麼意思)

最後一個except一般不指定名字,用於處理其餘情況

import sys

try:
    f = open('myfile.txt')
    s = f.readline()
    i = int(s.strip())
except IOError as e:
    print "I/O error({0}): {1}".format(e.errno, e.strerror)
except
ValueError: print "Could not convert data to an integer." except: print "Unexpected error:", sys.exc_info()[0] raise

try..except 語句還可以選擇使用else,例如

for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
    except IOError:
        print 'cannot open', arg
    else:
        print arg, 'has', len(f.readlines()), 'lines'
        f.close()

需要注意,一旦使用else,每個except後都要有else,這種方式用於需要指定某一異常不出現時執行什麼操作。

except子句可以在異常名後指定引數,這些引數被儲存在異常例項產生時的 instance.arg

>>> try:
...     raise Exception('spam', 'eggs')
... except Exception as inst:
...     print type(inst)
...     print inst.args
...     print inst
...     x, y = inst.args
...     print 'x =', x
...     print 'y =', y
... 
<type 'exceptions.Exception'>
('spam', 'eggs')
('spam', 'eggs')
x = spam
y = eggs

異常處理不僅僅處理直接在try中出現的異常,還可以處理在try中呼叫函式的異常

>>> def mdiv():
...     x = 1/0
... 
>>> try:
...     mdiv()
... except ZeroDivisionError as detail:
...      print 'Handling run-time error:', detail
... 
Handling run-time error: integer division or modulo by zero

相關推薦

python中的錯誤異常處理

使用try except處理異常 try: print 10 / 0 except ZeroDivisionError, e: print "catched a ValueError:",e 上面的程式碼中,被除數是0,會引發ZeroDivi

學習筆記——PythonPython錯誤異常處理

可以自己編寫程式來處理異常,比如下面這個例子,它會返回異常,直到使用者輸入有效資料為止。 >>> while True: ... try: ... x = int(raw_input("Please enter a number: ")) ... b

python 學習筆記(4)解析字串處理

宣告:本文系本人學習python3總結,如有侵權等,請及時告知; 一、解析          1、os 模組                   Python 3 帶有一個模組叫做 os,代表“作業系統(operating system)。 匯入osmodule 

兄弟連學Python 錯誤異常處理

嘗試 dex 訪問 port def post 推薦 log 出現 #常見的異常 class Human: #屬性 sex = ‘man‘ age = 18 #方法 def run(self): print(‘跑

python學習筆記(二十):異常處理

錯誤 fetchall nbsp 如果 info blog months api root 1 def calc(a,b): 2 res=a/b 3 return res 4 def main(): 5 money=input(‘輸入多少

python錯誤異常處理

前言 異常處理是為了讓程式更加健壯,讓程式面對一下非法輸入或者“呆子”有一定應對能力。python的異常處理跟java很像,java中把異常粗略劃分為錯誤和執行異常。在這裡統一叫Error 常見的錯誤 這裡只列舉常見的,更快的明白python異常處理

python錯誤異常處理的簡單操作例項(try-except)

#coding=utf8 print ''' 程式編譯時會檢測語法錯誤。 當檢測到一個錯誤,直譯器會引發一個異常,並顯示異常的詳細資訊。 在程式碼中新增錯誤檢測及異常處理,只需要將程式碼封裝在try

錯誤異常處理(7)

為什麽 nbsp 實現 str ron strong 指令 異常處理 處理 配置指令 錯誤日誌 異常處理 為什麽異常處理很方便 PHP的異常處理實現 SPL異常 錯誤和異常處理(7)

錯誤異常處理

選項 般的 out err 語法糖 stop 請求 特性 rect Python有兩種錯誤很容易辨認:語法錯誤和異常。 1 什麽是異常? 異常即是一個事件,該事件會在程序執行過程中發生,影響了程序的正常執行。 一般情況下,在Python無法正常處理程序

【PHP】解析PHP中的錯誤異常處理

not tty 不支持 版本 adding all 操作 lin ttr 目錄結構: contents structure [-] 錯誤級別 自定義處理器 設置異常日誌 自定義異常類 在這篇文章中,筆者將會闡述PHP中的異常處理,希望能夠對你

浙大《面向物件程式設計--java語言》學習筆記(第八週:異常處理與輸入輸出)

8.1 異常 ArrayIndex.java package exception; import java.util.Scanner; public class ArrayIndex { public static void main(String[] args) { // TO

Golang錯誤異常處理的正確姿勢

序言 錯誤和異常是兩個不同的概念,非常容易混淆。很多程式設計師習慣將一切非正常情況都看做錯誤,而不區分錯誤和異常,即使程式中可能有異常丟擲,也將異常及時捕獲並轉換成錯誤。從表面上看,一切皆錯誤的思路更簡單,而異常的引入僅僅增加了額外的複雜度。 但事實並非如此。

.NET----錯誤異常處理機制

前言   錯誤的出現並不總是編寫程式的人的原因,有時應用程式會因為應用程式的終端使用者引發的動作或執行程式碼的環境發生錯誤。無論如何,我們都應預測應用程式中出現的錯誤,並相應的進行編碼。   .Net改進了處理錯誤的方式。C#處理錯誤的機制可以為每種錯誤提供自定義處理方式,並把識別錯誤的程式碼與處理錯誤的

Python 3 學習筆記之——錯誤異常

參考 箭頭 cto last image 直接 cep 分享 一行 1. 語法錯誤 Python 的語法錯誤被稱為解析錯,語法分析器會指出出錯的代碼行,並且在最先找到的錯誤的位置標記一個小小的箭頭。 >>> while True File "&l

學習筆記——PythonPython中的類(classes)

在引入類之前,我們講Python的域規則。類的定義巧妙地運用了名稱空間,所以你需要知道域和名稱空間如何工作才能理解發生了什麼。  首先從定義開始。 名稱空間是名字和物件之間的對映。多數名稱空間使用Python的字典來實現,但除非出於效能考慮,我們通常不關心具體如何實現。名稱空間的例子有,內建的名稱例如abs

python學習筆記--Paramiko模塊安裝使用(轉)

lib64 報錯 再次 ref html 學習筆記 warn command sta 首先安裝依賴 yum -y install gcc 1 安裝 pycrypto wget http://ftp.dlitz.net/pub/dlitz/crypto/pycr

Head First Python 學習筆記-Chapter3:文件讀取異常處理

獲取 for循環 文件 處理 pyhton find ont ren app 第三章中主要介紹了簡單的文件讀取和簡單的異常處理操作。 首先建立文件文件夾:HeadFirstPython\chapter3,在Head First Pythong官方站

Python學習筆記--系統相關模塊操作

setuid val var 表達 package log 轉換 eval 最小 系統相關的信息模塊: import sys sys.argv 是一個 list,包含所有的命令行參數. sys.stdout sys.stdin sys.stderr 分別表示標準輸入

python學習筆記(三):文件操作集合

轉換 無序 mov python3 lose 大文件 寫入 接口測試 不存在 對文件的操作分三步: 1、打開文件獲取文件的句柄,句柄就理解為這個文件 2、通過文件句柄操作文件 3、關閉文件。 文件基本操作: f = open(‘file.txt‘,‘r‘) #以只讀方式打

python新手第一天學習筆記-第一個ptyhon程序python變量

ali color 輸出 3.5 pri -- class -i bsp 一、python 的註釋和第一個python 程序 : 1、單行註釋 # Author Xiajq 2、多行註釋 ‘‘‘ ------------註釋內容----------------------