1. 程式人生 > >Python中的try...except...finally

Python中的try...except...finally

try, except, finally是Python中的異常捕捉機制,通常的用法就是try..except...結合起來用,程式捕捉try語句塊中的異常,如果發現異常就把異常交給except中的語句塊進行處理,也就是執行except中的語句,這裡except也可以結合if...else一起使用。

當然,try...except也可以結合finally使用。則將finally放在最後,finally語句塊的內容通常是做一些後事的處理,比如資源釋放什麼的,並且finally語句塊是無論如何都要執行的,即使在前面的try和except語句塊中出現了return,都現將finally語句執行完再去執行前面的return語句。下面看一個簡單的例子:

try.py

def tryTest():
    try:
        den = input("input a number:")
        x = 1.0/int(den)
        print x
        return 1
    except Exception, e:
        print e
        return 0
    finally:
        print "this is a finally test"

result = tryTest()
print result


執行try.py

當輸入為1時,程式沒有捕捉到異常,則返回值為1,但是在返回之前會執行finally的語句塊,也即是列印“this is a finally test”這句話,如下圖:

當輸入為0時,程式沒有捕捉到除0異常,執行except中的語句塊,則返回值為0,但是在返回之前會執行finally的語句塊,如下圖:


所以無論如何finally語句塊中的程式碼都被執行了,倘若此時finally中有個return語句的話,那麼整個函式就會從finally中的return語句中返回,前面的return語句就沒用啦。

相關推薦

pythontry Except拋出異常使用方法

構造 自己的 ^c 輸出 mage fin floating 輸入 使用方法 對於python自動化測試同學來講try的作用太大了。 我們要保證每條用例都能得到我們預期並在測試報告中給出正確的pass或fail的結果 就可以通過try語句來很好的實現,並且能保證這個pass

pythontry except處理程式異常的三種常用方法

轉載自:http://www.pythontab.com/html/2013/pythonjichu_0204/210.html 如果你在寫python程式時遇到異常後想進行如下處理的話,一般用try來處理異常,假設有下面的一段程式: 1 2 3 4 5 6 7 8 try:

Pythontry...except...finally

try, except, finally是Python中的異常捕捉機制,通常的用法就是try..except...結合起來用,程式捕捉try語句塊中的異常,如果發現異常就把異常交給except中的語句塊進行處理,也就是執行except中的語句,這裡except也可以結合if

python 錯誤處理:try..except..finally / logging / raise

mono num last str ast onos logging word ria python錯誤繼承表:https://docs.python.org/3/library/exceptions.html#exception-hierarchy格式:def 函數():

011 python語法_錯誤處理 try except finally raise

    ''' 時間:2018/11/03 目錄:   一: 正常執行 1 正常 2 else   二: 發生錯誤 1 異常 2 異常 三: BaseException 四: 多層錯誤 - 多層

python try/except/finally詳解

try/except介紹 與其他語言相同,在python中,try/except語句主要是用於處理程式正常執行過程中出現的一些異常情況,如語法錯(python作為指令碼語言沒有編譯的環節,在執行過程中對語法進行檢測,出錯後發出異常訊息)、資料除零錯誤、從未定義的

Python異常處理try...except...finally raise assert

異常處理: try ...except  try程式碼塊放置容易發生異常的語句:except程式碼塊放置處理異常的語句 try ...except...finally finally程式碼快是任何時候

python tryexcept的用法

#try表示去開啟一個網頁,看是否有錯誤,注意Exception的書寫 #覺得例子是爬豆瓣網5次 import re import urllib.request for i in range(1,5):     try:         file = urllib.req

python try except finally 順序

# encoding:utf-8 import traceback def printException(e):

python try...finally... 的優雅實現

### 1. 關於 try.. finally.. 假如上帝用 python 為每一個來到世界的生物編寫程式,那麼除去中間過程的種種複雜實現,最不可避免的就是要保證每個例項最後都要掛掉。程式碼可簡寫如下: ```py try: born() # 出生 # 正常降臨世界 # do

異常處理try,else,finally含有return的情況解析

直接 若有 函數 pan 到你 異常 fin 運行 但是 直接看代碼,拿到你的py下運行測試一下就 明白了. 例一: def f(): try: print(1) return 3 f

Java try--catch-- finally、throw、throws 的用法

一、try {..} catch {..}finally {..}用法 try {   執行的程式碼,其中可能有異常。一旦發現異常,則立即跳到catch執行。否則不會執行catch裡面的內容 } catch (Exception e) {  除非try裡面執行程式碼發生了異常,否則這裡的程式碼不會執行 }

Pythontry異常的小案例

程式碼 try: file = open('gxs.txt','r+') except Exception as e: print('沒有發現名字為gxs的檔案') response = input('你是否想建立一個,y/n \n') if resp

Javatry catch finally 有異常和return時處理先後

public class TestDemo { private static String output = ""; public static void foo(int i) { try { if (i == 1) { throw new Exception(); }

Python使用try...except...輸出詳細錯誤

當Python的語段用了try...except...方式之後,就一直不太知道怎麼定位到詳細的程式crush 位置,這兩天程式需要用到這方面,於是就查了一下。 需要使用traceback包 import traceback try: #以除0錯誤為例 3/

Javatry catch finally語句含return語句的執行情況總結-程式設計陷阱

前言:有java程式設計基礎的人對java的異常處理機制都會有一定了解,而且可能感覺使用起來也比較簡單,但如果在try catch finally語句塊中遇到return語句,開發者可能就會遇到一些邏輯問題,甚至步入程式設計的陷阱。不信,我們先看看一段小程式,讀

javatry,catch,finally的合理應用

try {try {        code that might throw exceptions    } finally {        code that might throw exceptions    }} catch (Exception e) {    show error dialog}

Java異常處理try,catch,finally的各種組合用法

1.try+catch 程式的流程是:執行到try塊中,如果有異常丟擲,則轉到catch塊去處理。然後執行catch塊後面的語句  2.try+catch+finally 程式的流程是:執行到try

java try catch finally 的具體執行順序返回結果+程式碼測試

執行順序的重點就在finally中,具體如下: (1)、try:它裡面放置可能引發異常的程式碼(2)、catch:後面對應異常型別和一個程式碼塊,用於表明該catch塊用於處理這種型別的程式碼塊,可以

python_pythontry except處理程式異常的三種常用方法

python中try except處理程式異常的三種常用方法 如果你在寫python程式時遇到異常後想進行如下處理的話,一般用try來處理異常,假設有下面的一段程式: 1 2 3 4 5 6 7 8 try: 語句1 語句2 . .