Python中的異常(Exception)

2021-07-27 07:52:33 字數 2299 閱讀 6012

完整形式:try-except-else-finally

try:

"框住了你感覺會丟擲異常的**"

except:

"try**塊裡的**如果丟擲異常了,該執行什麼內容"

else:

"try**塊裡的**如果沒有跑出異常,就執行這裡"

finally:

"不管如何,finally裡的**,是總會執行的"

以下是一套完整的例項:

import urllib

sth_url = ""

try:

d = urllib.urlopen(sth_url)

except ioerror:

print

"哈哈哈出錯了"

else:

content = d.read()

finally:

d.close()

找到python的內建異常;

理解python的內建異常分別對應什麼情況;

閱讀你的**,找到你的**裡可能會丟擲內建異常的地方;

僅對這幾行**做異常處理。

總結:假設你無法知道你的**會丟擲什麼異常,那麼,你的異常處理便是無效的。即準確了解你的**情況,在必要時才使用異常

import sys

try:

a = 3

assert a > 4

except:

exc = sys.exc_info() #sys.exc_info() 提供乙個三元組資訊:異常類;異常類例項;跟蹤記錄物件

logging.debug(exc[1])

print exc

import logging   

logger = logging.getlogger()

hdlr = logging.filehandler('/tmp/sendlog.txt')

formatter = logging.formatter('%(asctime)s %(levelname)s %(message)s') #定義儲存格式

hdlr.setformatter(formatter)

logger.addhandler(hdlr)

logger.setlevel(logging.notset)

logger.debug('this is a debug message')

logger.error('this is an error message')

格式:*assert 表示式 , '出錯以後丟擲的message'*

一種開發期時檢定**的方式,斷言失敗只會丟擲assertionerror

何時使用斷言?先斷言絕對不能發生的錯誤,然後再去處理異常。

下面是乙個最簡單的自定義異常:

class

myexception

(exception):

def__init__

(self,error,message):

self.args = (error,message)

self.error = error

self.message = message

try:

raise myexception(1,'my exception') #raise 語句觸發異常

except exception as e:

print str(e)

用with語句開啟檔案,不需要關閉檔案操作。

with open('filename','r') as a:

e = a.read()

class

sth(object):

def__init__

(self,xixi):

self.a = xixi

def__enter__

(self):

print

"enter"

return self.a

def__exit__

(self,type,value,traceback)

print "exit"

with

sth('xixi_name')

asf:

# f是enter方法返回的物件

print f

乙個非常不好的異常處理方式 偷換Exception

有時根據現場發回出錯日誌,根本不能找到對應的原因。比如當前日誌,乙個功能點失效,日誌裡只有記錄 建立目錄失效 的異常。以此為出發點,檢視許可權和磁碟問題,沒有發現任何問題。後來除錯環境用vs跟蹤,然後發現這樣的奇葩 try catch 這個 居然沒有截獲真正的異常,記錄下來好便於跟蹤,反倒自己丟擲乙...

python中異常語句 python 異常

導航 python的異常分為兩種,1 語法錯誤,在python直譯器的語法檢測中不通過不能執行 2 異常,python程式執行期檢測到的錯誤被稱為異常。在沒有做異常處理時,將終止程式並提示異常資訊,如 字串轉換為數字時的型別轉換異常,檔案讀取時的檔案不存在異常,網路鏈結時主機不可達異常 等。當pyt...

python中的異常

exception類是最常用的異常類,該類包括standarderror,stopiteration,generatorexit,warning等異常類.standarderror類是python的錯誤異常,如果程式中出現邏輯上的錯誤,將引發該異常.例如除數為0的異常。standarderror類是...