python學習 異常,python學習
#===========================常見異常 =====================
#print(a);#NameError: name 'a' is not defined 變數未定義
#if True:#SyntaxError: unexpected EOF while parsing 語法錯誤
#f=open("123.txt");#FileNotFoundError: [Errno 2] No such file or directory: '123.txt' 沒有這個檔案 #print(10/0);
# ZeroDivisionError: division by zero 除數為 0錯誤 #print(int("a"));
# ValueError: invalid literal for int() with base 10: 'a' 值轉換無效
#-*-config=utf-8 -*-#===========================異常處理 (捕獲運行時異常) =====================#常見異常#print(a);#NameError: name 'a' is not defined 變數未定義#if True:#SyntaxError: unexpected EOF while parsing 語法錯誤#f=open("123.txt");#FileNotFoundError: [Errno 2] No such file or directory: '123.txt' 沒有這個檔案#print(10/0);# ZeroDivisionError: division by zero 除數為 0錯誤#print(int("a"));# ValueError: invalid literal for int() with base 10: 'a' 值轉換無效#===================== try - except 文法 ==================def tryTest_1(): try: print(10/0); except:# 捕獲所有類型異常 print("Zero Error");# Zero Error#tryTest_1();def tryTest_2(): try: print(10/0); except ZeroDivisionError as e:#捕獲 指定類型的異常 print("Zero Error");# Zero Error#tryTest_2();#案例 猜數字遊戲import random;def guessNum(): num=random.randint(0,100);#產生一個隨機數 while True: try: inputNum=int(input()); except ValueError as e: print("請輸入1-100的數字"); continue; if num>inputNum: print("輸入的太小"); if num<inputNum: print("輸入的太大"); if(num==inputNum): print("Ok"); break;#guessNum();#======================同時處理多個異常====================def tryTest_3(): try: f=open("2.txt"); except FileNotFoundError as e: print("檔案不存在");#檔案不存在 except ValueError as e: print("錯誤的值");#tryTest_3();#===================== try - except - else==============#如果存在異常代碼執行相應的異常類型捕獲,如果不存在異常代碼執行elsedef tryTest_4(): try: print(1+1); #f=open("2.txt"); except FileNotFoundError as e: print("檔案不存在");#檔案不存在 except ValueError as e: print("錯誤的值"); else: print("No Error");#tryTest_4();#===================== try finally ============#無論是否檢查到異常,都會執行finally代碼#作用:為異常處理事件提供清理機制,用來關閉檔案或者釋放資源。def tryTest_5(): try: f=open("2.txt"); finally: print("file close"); f.close();#tryTest_5();#========================== try -except -finally =============#1、如果 try語句沒有捕獲異常,執行try代碼後,執行finally語句#2、如果 try語句捕獲到異常,首先執行except語句後執行finally語句def tryTest_6(): try: f=open("2.txt"); except FileNotFoundError as e: print("檔案不存在"); finally: print("file close"); f.close();#tryTest_6();#========================== try -except - else -finally =============#1、如果 try語句沒有捕獲異常,執行try代碼後執行else語句最後執行finally語句#2、如果 try語句捕獲到異常,首先執行except語句後執行finally語句def tryTest_7(): try: print(10/1); except ZeroDivisionError as e:#捕獲 指定類型的異常 print("Zero Error");# Zero Error else: print("else語句"); finally: print("finally");#tryTest_7();#==============================with 語句======================# with語句用來替換try-except-finall語句 使代碼更加簡潔def withTEst(): try: with open("E:\python\w_2.txt") as f: print(f.readline()); except FileNotFoundError as e: print("檔案不存在"); f.close();#withTEst();#=======================raise 語句 ==============================#raise 主動拋出異常#類似於java中的throw關鍵字def raiseTest(): raise IOError("IO異常");#raiseTest();#======================assert語句=================================#assert語句:用於檢測運算式是否為真,如果為假,引發AssertionError錯誤#文法:assert expression (判斷一個運算式)# assert expression1, expression2(判斷多個運算式)import random;def assertTest(n): assert n>random.randint(0,10); print(n);#assertTest(3);#如果傳入的 n 大於隨機產生的數則列印n#如果傳入的n小於隨機產生的數 則引發AssertionError錯誤