搜尋
  • 登入
  • 報名
密碼重置成功

關注您感興趣的項目並了解有關它們的最新消息

Python異常處理

收藏 187
閱讀 51322
更新時間 2016-09-11

本文較為詳細的羅列了Python常見的異常處理,供大家參考,具體如下:

1. 拋出異常和自定義異常

Python用異常物件(exception object)表示異常狀況,遇到錯誤後,會引發異常。如果異常物件並未被處理或捕捉,程式就會用所謂的回溯(Traceback,一種錯誤訊息)終止執行。

①.raise 語句

Python中的raise 關鍵字用來引發一個例外,基本上和C#和Java中的throw關鍵字相同,如下所示:

# -- coding: utf-8 --

def ThorwErr():
  raise Exception("抛出一个异常")

# Exception: 抛出一个异常
ThorwErr()

raise關鍵字後面是拋出是一個通用的例外類型(Exception),一般來說拋出的例外越詳細越好,Python在exceptions模組內建了許多的異常類型,透過使用dir函數來查看exceptions中的異常類型,如下:

#
import exceptions

# ['ArithmeticError', 'AssertionError'.....]
print dir(exceptions)

##傳遞異常 ##捕捉到了異常,但是又想重新引發它(傳遞異常),可以使用不帶參數的raise語句即可:

##

# -- coding: utf-8 --
class MuffledCalculator:
  muffled = False
  def calc(self,expr):
    try:
      return eval(expr)
    except ZeroDivisionError:
      if self.muffled:
        print 'Division by zero is illegal'
      else:
        raise

②.自定義異常類型

Python中也可以自訂自己的特殊類型的異常,只需要要從Exception類別繼承(直接或間接):

class SomeCustomException(Exception):
  pass

2. 捕捉異常

和C#中的try/catch類似,Python中使用try/except關鍵字來捕捉例外,如下:

# -- coding: utf-8 --

try:
  print 2/0
except ZeroDivisionError:
  print '除数不能为0'

①.捕捉多個例外

#在一個except語句只捕捉其後宣告的例外類型,如果可能會拋出的是其他類型的異常就需要再增加一個except語句了,或者也可以指定一個更通用的異常類型比如:Exception,如下:

# -- coding: utf-8 --
try:
  print 2/'0'
except ZeroDivisionError:
  print '除数不能为0'
except Exception:
  print '其他类型异常'

為了捕獲多個異常,除了宣告多個except語句之外,還可以在一個except語句之後將多個異常作為元組列出來即可:

# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception):
  print '发生了一个异常'

②.獲取異常訊息

每個異常都會有一些異常訊息,一般情況下我們應該把這些異常訊息記錄下來:

# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception) as e:
  # unsupported operand type(s) for /: 'int' and 'str'
  print e

3. finally子句

finally子句和try子句合併使用但是和except語句不同,finally不管try子句內部是否有異常發生,都會執行finally子句內的程式碼。所有一般情況下,finally自己常常用於關閉文件或在Socket中。

# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception):
  print '发生了一个异常'
finally:
  print '不管是否发生异常都执行'

熱AI工具
Undress AI Tool
Undress AI Tool

免費脫衣圖片

AI Clothes Remover
AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undresser.AI Undress
Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

Stock Market GPT
Stock Market GPT

人工智慧支援投資研究,做出更明智的決策

熱門工具
記事本++7.3.1
記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版
SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1
禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6
Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版
SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)