-
錯誤和異常的區別
查看全部 -
1:自定義異常必須繼承Exception類
2:自定義異常只能主動觸發
查看全部 -
1:raise:raise語句用于主動拋出異常
2:assert:assert檢查表達式是否為真,如果表達式為假,就會引發AsserttionError錯誤
查看全部 -
1 :finally:作用:語句為異常處理事件提供清理機制,用來關閉文件或者釋放系統資源
查看全部 -
try_except捕獲異常分析:
try:
? ? ?可能錯誤的語句塊
except:
? ? ?捕獲異常的操作
查看全部 -
with語句上下文管理
無論如何都會執行__exit__ 方法?
當出現異常時,先進行退出,釋放系統資源,再對錯誤類型進行處理
在示例中,老師顯式的自定義了__enter__ 和__exit__ 方法,方便查看整個with as語句執行過程,實際應用時?__enter__ 和__exit__ 方法系統自動提供
查看全部 -
with語句:
with context [as var]:
? ??????with_suite
with語句用來替代try-except_finally語句,使代碼更加簡潔;
context表達式返回是一個對象
var用來保存context返回對象,單個返回值或者元組
with_suit 使用var變量來對context返回對象進行操作
f.seek(file *stream,long offset,int fromWhere) :
os.SEEK_SET 文件的開始位置
with 語句對于沒有異常的情況下是可以正常關閉文件的,在with_suite語句遇到異常的情況下,錯誤異常并沒有真正的處理,需要系統進行處理和上報。對with的異常需要進行捕捉和處理。拋異常之前先關閉文件。需要用try語句來捕捉with中的異常。
with語句的實質是上下文管理,包括方法__enter__()和 __exit__()(關閉文件和清理資源)。
with應用場景:
文件操作,進程之間的互斥對象,支持文件上下文的其他對象。
查看全部 -
常見錯誤:
1、NameError:a沒有定義
2、SyntaxError
3、IOError:f=open('1.text)
4、ValueError:a=int('dd')
5、ZeroDivisionError:10/0
6、KeyboardInterrupt:終止正在執行的程序
查看全部 -
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 錯誤和異常概念
錯誤:
1、語法錯誤:代碼不符合解釋器或者編譯器語法
2、邏輯錯誤:不完整或者不合法輸入或者計算出現問題
異常:執行過程中出現問題導致程序無法執行
1、程序遇到邏輯或者算法問題
2、運行過程中計算機錯誤(內存不夠或者IO錯誤)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 錯誤和異常的區別
錯誤:
1、代碼運行前的語法或者邏輯錯誤,語法錯誤在執行前修改,邏輯錯誤無法修改
異常:
1、異常產生,檢查到錯誤且解釋器認為是異常,拋出異常;
2、異常處理,截獲異常,忽略或者終止程序處理異常;
查看全部 -
執行with語句時,調用上下文管理器__enter__方法,var變量接受該方法返回值。
若出現錯誤,首先關閉文件(調用上下文管理器__exit__方法),然后處理異常(沒有真正處理,仍需加try-except處理);
若無錯誤,則執行后自動關閉文件。
查看全部 -
try-finally語句不是為了捕獲異常,主要用于清理工作,用來關閉文件或釋放系統資源。
如果遇見異常,則先運行finally模塊,再將異常拋給解釋器。
try-except-finally、try-except-else-finally:
如果遇見異常,則先執行except處理錯誤,然后執行finally模塊。
查看全部 -
猜數字游戲
import?random num?=?random.randint(0,?100)?#產生0到100間的隨機數 while?True: ????try: ????????guess?=?int(raw_input("Enter?1~100:")) ????except?ValueError,?e: ????????print?"Enter?1~100" ????????continue?#不再執行下面語句 ????if?guess?>?num: ????????print?"guess?Bigger:",?guess ????elif?guess?<?num: ????????print?"guess?Smaller:",?guess ????else: ????????print?"Guess?OK,?Game?Over" ????????break?#跳出循環 ????print?"\n"
查看全部 -
SyntaxError不能捕獲!
執行過程:py文件通過python解釋器生成二進制的字節碼文件,解釋器自動對語法進行檢查。如果發現問題,在轉換過程中會將語法錯誤拋出,此時代碼未真正進行,所以python解釋器沒有辦法截獲到語法錯誤這類運行前的異常。
查看全部 -
捕獲異常
try: ????a except?NameError,?e:?#將異常代入e變量 ????print?"catch?Error:",?e print?"exec?over"
如果前面定義了a,則不會拋出異常,直接打印exec over
查看全部
舉報