日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python异常处理优点_python各类异常处理学习笔记

發(fā)布時(shí)間:2023/12/19 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python异常处理优点_python各类异常处理学习笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

print("============異常與工具===================")

print("============一、異?;A(chǔ)===================")

"""

1、try/except

捕捉由 Python或你引起的異常并恢復(fù)。

2、try/finally

無論異常是否發(fā)生,執(zhí)行清理行為。

3、raise

手動在代碼中觸發(fā)異常。

4、assert

有條件地在程序代碼中觸發(fā)異常。

5、with/as

在 Python2.6和后續(xù)版本中實(shí)現(xiàn)環(huán)境管理器(在2.5版中是可選功能)。

"""

def fetcher(obj,index):

return obj[index]

x='spam'

print(fetcher(x,3))

# try:

# fetcher(x,4)

# except IndexError:

# print('got exception')

def catcher():

try:

fetcher(x,4)

except IndexError:

print('got exception')

print('continuing')

catcher()

print("============1、用戶異常的定義===================")

class Bad(Exception):

pass

def doomed():

raise Bad()

try:

doomed()

except Bad:

print('got Bad')

print("============2、終止行為===================")

try:

fetcher(x,3)

finally:

print('after fetch')

def after():

try:

fetcher(x,3)

finally:

print('after fetch')

print('after try?')

after()

with open('lumberjack.txt','w') as file:

file.write('The larch!\n')

"""

本章習(xí)題

1.說出異常處理的3個(gè)優(yōu)點(diǎn)。

2.如果你不想做任何特殊的事情來處理異常,那么異常會發(fā)生什么呢?

3.如何從一個(gè)異?;謴?fù)你的腳本?

4.說出在腳本中觸發(fā)異常的兩種方式。

5.指出兩種方式:不管異常是否發(fā)生,它們用來指定最終運(yùn)行的行為。

"""

"""

1.異常處理對于錯(cuò)誤處理、終止動作和事件通知有用。它可以簡化特殊情況的處理,并且可以用來實(shí)現(xiàn)替代的控制流程。一般來講,異常處理還可以減少程序所需的檢

測錯(cuò)誤代碼的數(shù)量,因?yàn)樗械腻e(cuò)誤都由處理器來過濾,你可能不需要測試每個(gè)操作的輸出。

2.任何未捕獲的異常最終都流入默認(rèn)的異常處理器, Python在程序的最頂端提供了它。這個(gè)處理器打印出類似的出錯(cuò)消息,并且退出程序。

3.如果你不想要默認(rèn)消息和退出,可以編寫ry/except語句來捕獲并從觸發(fā)的異?;謴?fù)。一旦捕獲了一個(gè)異常,該異常將終止,并且程序繼續(xù)。

4. raiseassert和語句可以用來觸發(fā)一個(gè)異常,就好像該異常已經(jīng)由 Python自身引

發(fā)。原則上講,我們可以通過生成一個(gè)程序錯(cuò)誤來引發(fā)異常,但是,這通常不是一個(gè)明確的目標(biāo)。

5.try y/finally語句可以用來確保在一個(gè)代碼塊退出后執(zhí)行的操作,而不管它是否會引

發(fā)一個(gè)異常。with/as語句也可以用來確保要運(yùn)行的終止操作,但是,只有當(dāng)處理的對象類型支持它的時(shí)候才可用。

"""

print("============二、異常編碼細(xì)節(jié)===================")

"""

try:

#Run this main action first

except :

#Run if name1 is raised during try block

except(name2, name3):

#Run if any of these exceptions occur

except as :

#Run if name4 is raised, and get instance raised

except:

#Run for allother) exceptions raised

else:

#Run if no exception was raised during try block

except分句會捕捉異常, finally分句最后一定會執(zhí)行,而如果沒遇上異常,else分句就會執(zhí)行。

"""

"""

try語句分句形式

分句形式 說明

except: 捕捉所有(其他)異常類型

except name: 只捕捉特定的異常

except name, value: 捕捉所列的異常和其額外的數(shù)據(jù)(或?qū)嵗?

except(name1, name2): 捕捉任何列出的異常

except(name1,name2), value:捕捉任何列出的異常,并取得其額外數(shù)據(jù)

else: 如果沒有引發(fā)異常,就運(yùn)行

finally: 總是會運(yùn)行此代碼塊

"""

# class MyError(Exception):pass

# def stuff(file):

# raise MyError()

# file= open('data','w')

# try:

# stuff(file)

# finally:

# file.close()

# print('not reached')

print("============三、統(tǒng)一try/exception/finally語句===================")

# try:

# main-action

# except Exception1:

# handler1

# except Exception1:

# handler2

# ...

# else:

# else-block

# finally:

# finally-block

"""

try --- except --- else --- finally

"""

print("============四、合并Try的例子===================")

sep = '-'*32+'\n'

print(sep+'Exception Raise And Caught')

try:

x='spam'[99]

except IndexError:

print('except run')

finally:

print('finally run')

print('after run')

print(sep + 'No Exception Raise')

try:

x='spam'[3]

except IndexError:

print('except run')

finally:

print('finally run')

print('after run')

print(sep + 'No Exception,With Else')

try:

x='spam'[3]

except IndexError:

print('except run')

else:

print('else run')

finally:

print('finally run')

print('after run')

print(sep + 'Exception Raise But Not Caught')

try:

x=1 / 0

except ZeroDivisionError:

print('except run')

finally:

print('finally run')

print('after run')

print("============五、環(huán)境管理協(xié)議===================")

# class TraceBlock:

# def message(self,arg):

# print('running',arg)

# def __enter__(self):

# print('starting with block')

# return self

# def __exit__(self, exc_type, exc_val, exc_tb):

# if exc_type is None:

# print('exited nomally\n')

# else:

# print('raise an exception!',exc_type)

# return False

# with TraceBlock() as action:

# action.message('test 1')

# print('reached')

#

# with TraceBlock() as action:

# action.message('test 2')

# raise TypeError

# print('not reached')

print("============二、異常對象===================")

"""

使用 raise語句主動拋出異常的意思是開發(fā)者可以自己制造程序異常,這里的程序異常不是指發(fā)生了內(nèi)存溢出、列表越界訪問等系統(tǒng)異常,而是指程序在執(zhí)行過程中,發(fā)生

了用戶輸入的數(shù)據(jù)與要求數(shù)據(jù)不符、用戶操作錯(cuò)誤等問題,這些問題都需要程序進(jìn)行處理并給出相應(yīng)的提示。處理這些問題多使用判斷語句,在判斷語句體內(nèi)進(jìn)行相應(yīng)的

問題處理,如果處理問題的語句過多,就會導(dǎo)致代碼復(fù)雜化,代碼結(jié)構(gòu)不夠清晰。在這種情況下,可以使用 raise語句主動拋出異常,由異常處理語句塊進(jìn)行處理。

"""

#用戶登錄判斷,登錄窗口設(shè)置

try:

print("請輸入登錄賬號:")

username= input(">>:")

if username !="John":

raise Exception("用戶名輸入錯(cuò)誤,請重新輸入:")

print("請輸入登錄密碼:")

psw= input(">>:")

if(psw !="123456"):

raise Exception("密碼輸入錯(cuò)誤,請重新輸入")

except Exception as e:

print(e)

print("============三、為什么使用類異常===================")

# class General(Exception):pass

# class Specific1(General):pass

# class Specific2(General):pass

#

# try:

# func()

# except(General,Specific1,Specific2):

# ...

"""

1、BaseException 異常的頂級根類

2、Exception 與應(yīng)用相關(guān)的異常的頂層根超類,這是BaseException的一個(gè)直接子類,并且是所有其他內(nèi)置異常的超類,除了系統(tǒng)退出事件類之外(SystemExit、

KeyboardInterruptGeneratorExit和)幾乎所有的用戶定義的類都應(yīng)該繼承自這個(gè)類,而不是BaseException。當(dāng)遵從這一慣例的時(shí)候,在一條try語句的處理

器中指明 Exception,會確保你的程序?qū)⒉东@除了系統(tǒng)退出事件之外的所有異常,通常該事件是允許通過的。實(shí)際上, Exception變成了try語句中的一個(gè)全捕獲,

并且比一條空的 except更精確。

3、ArithmeticError:所有數(shù)值錯(cuò)誤的超類(并且是Exception的一個(gè)子類)。

4、OverflowError:識別特定的數(shù)值錯(cuò)誤的子類。

"""

# class FormatError(Exception):

# logfile = 'fomaterror.txt'

# def __init__(self,line,file):

# self.line = line

# self.file = file

# def logerror(self):

# log = open(self.logfile,'a')

# print('Error at',self.file,self.line,file=log)

# def parser():

# raise FormatError(40,'spam.txt')

# try:

# parser()

# except FormatError as exc:

# exc.logerror()

def action2():

print(1+[])

def action1():

try:

action2()

except TypeError:

print('inner try')

try:

action1()

except TypeError:

print('outer try')

print("============四、語法嵌套化==================")

try:

try:

action2()

except TypeError:

print('inner try')

except TypeError:

print('outer try')

總結(jié)

以上是生活随笔為你收集整理的python异常处理优点_python各类异常处理学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成人777| 自拍偷拍专区 | 无遮挡av | 美国毛片网站 | 性欧美video另类hd尤物 | 国产一区二区视频免费 | 欧美粗暴se喷水 | 老女人丨91丨九色 | 伊人网国产| 国产女人在线 | 电影91久久久 | 麻豆极品 | 日本护士做爰视频 | www久久久天天com | 99ri在线| 久久亚洲成人av | 超碰av人人| 精品国精品国产 | 中文在线日韩 | 男女做受视频 | 69er小视频 | 成人h动漫精品一区二区无码 | 国产伦精品一区 | 国产精品久久久久久三级 | 午夜精彩视频 | av永久在线 | 国产粉嫩白浆 | 亚洲成人黄色在线 | 老色驴综合网 | 国产微拍一区 | 欧美性免费 | 天天天干干干 | 九九九免费 | 日韩中文字幕一区二区三区 | 黄色小网站在线观看 | 午夜免费视频观看 | 美女扒开腿免费视频 | 久草欧美 | 妺妺窝人体色www婷婷 | 色婷婷狠狠 | 国产第一页av | 国产日韩一区二区三免费高清 | 在线观看国产亚洲 | 国产一区网站 | 另类ts人妖一区二区三区 | 特级性生活片 | 亚洲一区 欧美 | 黄色av日韩 | 午夜高清视频 | 国产欧美一区二区三区精华液好吗 | 国产第8页| 欧美日韩精品中文字幕 | 亚洲国产视频在线 | 麻豆精品视频免费观看 | 久久精品国产一区二区电影 | 日韩色资源 | 日韩免费在线播放 | 三级av片| 精品一区久久久 | 国产黄色特级片 | www.国产com | 一本色道久久综合狠狠躁 | 国产三级做爰高清在线 | 欧美另类69 | 欧美自拍一区 | 久久久久亚洲精品 | 五月婷婷基地 | 九一福利视频 | 91蝌蚪91密月 | av日韩一区二区三区 | 快色网站 | 久久久久国色av免费观看性色 | 日韩专区中文字幕 | 顶级毛片 | 成人午夜电影网站 | 国内精品久久久久久久久久 | 男女裸体无遮挡做爰 | 久久久久无码国产精品一区李宗瑞 | 欧美大白屁股 | 可以免费看的毛片 | 91另类| 免费在线国产视频 | 蜜臀中文字幕 | 成人在线免费播放视频 | 午夜福利电影一区二区 | 国产毛片久久久久久国产毛片 | 日韩在线精品视频一区二区涩爱 | 涩天堂| 欧美激情欧美激情在线五月 | 爱爱爱爱网 | 天天看夜夜 | 天天草夜夜 | 俄罗斯丰满熟妇hd | xxxxx毛片| 老司机深夜视频 | 国产成人精品电影 | 99er在线观看 | 亚洲欧美视频一区 | 天天爱天天做天天爽 |