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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

14 异常

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 14 异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第15節 異常

作業解答

# 根據課堂上給出的上下文管理器,判斷IO操作和文件操作那個速度快 ? from datetime import datetime import io ? class RunTime(object):def __enter__(self):self.start_time = datetime.now()print(self.start_time)return self.start_time ?def __exit__(self, exc_type, exc_val, exc_tb):self.end_time = datetime.now()print(self.end_time)print('運行時間為: %s' % (self.end_time - self.start_time)) ? ? sio = io.StringIO() sio.write('今天天氣真好') ? with RunTime() as a:with open('duqusucai.py', 'r') as file:print(file.read()) ? with RunTime() as b:print(sio.getvalue()) ? ? # 運行結果: 2018-04-18 02:58:20.221762 今天天氣真好 2018-04-18 02:58:20.228967 運行時間為: 0:00:00.007205 2018-04-18 02:58:20.229365 今天天氣真好 2018-04-18 02:58:20.229521 運行時間為: 0:00:00.000156

?


一,認識異常

  • Python的異常結構

python中所有的異常都是繼承自BaseException,分為四大類:

類型描述
SystemExitpython退出異常
Keyboardlnterrupt鍵盤打斷(ctrl + c)
GeneratorExit生成器退出
Exception普通異常

二,異常處理

例1:基本的try...except... try: # 首先寫一個try,然后把所有可能出錯的代碼放進去,try后面必須趕上exceptprint('------1------') # 第一條正確print(a) # 第二條錯誤print('------3-------') # 第三條正確 ? except: # 寫上一個exceptpass # 下面是寫 捕獲到異常的處理方案 ? 運行結果: ------1------ 例2:捕獲具體的異常 try: # 首先寫一個try,然后把所有可能出錯的代碼放進去print('------1------') # 第一條正確print(a) # 第二條錯誤print('------3-------') # 第三條正確 ? except NameError as info: # 寫上一個except 捕獲異常類型print('捕獲到異常代碼,下面是異常代碼:')print(info) ? 運行結果: ------1------ 捕獲到異常代碼,下面是異常代碼: name 'a' is not defined 例3:捕獲多種異常 # 寫法一:可以寫多個except try:pass except TabError:pass except NameError:pass # 寫法二:在except后面用括號把多種異常類型給括起來 try:pass except(NameError,TabError):pass # 不確定的異常類型 try:pass except Exception:pass 例4:更加豐富的結構 try: # 首先寫一個try,然后把所有可能出錯的代碼放進去print('------1------') # 第一條正確print(a) # 第二條錯誤print('------3-------') # 第三條正確 ? except Exception as result: # 在這里用 as 將捕獲到的異常 用這個變量保存起來print('捕獲到異常,會執行我下面的代碼對異常進行處理')print(result) ? else:print('沒有捕獲到異常,執行我') ? finally:print('不管有沒有異常,我都會執行')運行結果: ------1------ 捕獲到異常,會執行我下面的代碼對異常進行處理 name 'a' is not defined 不管有沒有異常,我都會執行 ?
注意事項:
1. try ? ? ? 下面放可能出錯的代碼
2. except try下面的代碼出錯后,會執行except下面的代碼
3. else ? ? try下面代碼沒有錯誤,執行else下面的代碼
4. finally 不管try下面的代碼有沒有出錯,始終都會執行 例5:自定義異常類型 class MyError(Exception): # 自定義的異常必須繼承 Exceptionpass ? raise MyError # 主動拋出 自定義異常 ? 運行結果: Traceback (most recent call last):File "/home/pyvip/pycharm/23班作業/異常.py", line 37, in <module>raise MyError # 主動拋出 自定義異常 __main__.MyError raise ? 主動拋出異常
格式:raise 異常類型
注意:raise 是主動拋出后面寫的異常類型

三,斷言(類似raise)

if not False:raise Exception('條件不滿足') ? 等效于: ? assert True # 不拋出異常 assert False # 拋出異常
def myfunc(num):assert type(num) == int:raise TypeError('不是數字')return num * 10 ? print(myfunc('hello')) ? # 若傳入不為int會報錯,反之則會正常運行

四,自行定義異常類型 (控制類型)

class NameMustBeLuckError(Exception):pass ? ? def myfunc(name):if name != 'luck':raise NameMustBeLuckError('The name must be luck!') ? try:print(myfunc('juhao')) except Exception as a:print(a)# 運行結果: The name must be luck!

?

轉載于:https://www.cnblogs.com/zcmq/p/9114150.html

總結

以上是生活随笔為你收集整理的14 异常的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。