day 1 異常基本功能
阿新 • • 發佈:2017-11-25
讀取文件 讀取 director nal under 哈哈 read content 捕獲
1.什麽是異常?程序出現的錯誤
In [1]: open(‘xxx.txt‘) --------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) <ipython-input-1-e41727968802> in <module>() ----> 1 open(‘xxx.txt‘) FileNotFoundError: [Errno2] No such file or directory: ‘xxx.txt‘ In [2]: print(num) --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-2-64c1b968c91a> in <module>() ----> 1 print(num) NameError: name‘num‘ is not defined
2.異常處理,預處理方案
try: print(num) print("-----1-----") except NameError: print("出現名字異常錯誤") print("------2------")
#### 運行結果 出現名字異常錯誤 ------2------
3.多個異常
1)版本1:
try: open("xxx.txt") print(num) print("-----1-----") except NameError: print("出現名字異常錯誤") except FileNotFoundError: print("文件不存在。。") print("------2------")
文件不存在。。
------2------
2)版本2:
try: open("xxx.txt") print(num) print("-----1-----") except (NameError,FileNotFoundError): print("出現異常錯誤") print("------2------")
出現異常錯誤
------2------
3)版本3:其他異常
try: 11/0 open("xxx.txt") print(num) print("-----1-----") except (NameError,FileNotFoundError): print("出現異常錯誤") except Exception: print("如果用了Exception,那麽意味著只要上面的except沒有捕獲到異常,這個except一定會捕獲到") print("------2------")
如果用了Exception,那麽意味著只要上面的except沒有捕獲到異常,這個except一定會捕獲到
------2------
4)版本4:查看異常原因
try: 11/0 open("xxx.txt") print(num) print("-----1-----") except (NameError,FileNotFoundError): print("出現異常錯誤") except Exception as ret: print("如果用了Exception,那麽意味著只要上面的except沒有捕獲到異常,這個except一定會捕獲到") print(ret) print("------2------")
如果用了Exception,那麽意味著只要上面的except沒有捕獲到異常,這個except一定會捕獲到
division by zero
------2------
5)版本5:沒有異常
try: # 11/0 # open("xxx.txt") # print(num) print("-----1-----") except (NameError,FileNotFoundError): print("出現異常錯誤") except Exception as ret: print("如果用了Exception,那麽意味著只要上面的except沒有捕獲到異常,這個except一定會捕獲到") print(ret) else: print("沒有出現異常,,,哈哈哈哈") print("------2------")
-----1-----
沒有出現異常,,,哈哈哈哈
------2------
4 finally
1)沒有異常
try: # 11/0 # open("xxx.txt") # print(num) print("-----1-----") except (NameError,FileNotFoundError): print("出現異常錯誤") except Exception as ret: print("如果用了Exception,那麽意味著只要上面的except沒有捕獲到異常,這個except一定會捕獲到") print(ret) else: print("沒有出現異常,,,哈哈哈哈") finally: print("---這段程序死亡時候執行finally---") print("------2------")
-----1-----
沒有出現異常,,,哈哈哈哈
---這段程序死亡時候執行finally---
------2------
2)有異常
try: 11/0 open("xxx.txt") print(num) print("-----1-----") except (NameError,FileNotFoundError): print("出現異常錯誤") except Exception as ret: print("如果用了Exception,那麽意味著只要上面的except沒有捕獲到異常,這個except一定會捕獲到") print(ret) else: print("沒有出現異常,,,哈哈哈哈") finally: print("---這段程序死亡時候執行finally---") print("------2------")
如果用了Exception,那麽意味著只要上面的except沒有捕獲到異常,這個except一定會捕獲到
division by zero
---這段程序死亡時候執行finally---
------2------
3)不管有沒有異常,都關閉文件
import time try: f = open(‘test.txt‘) try: while True: content = f.readline() if len(content) == 0: break time.sleep(2) print(content) except: #如果在讀取文件的過程中,產生了異常,那麽就會捕獲到 #比如 按下了 ctrl+c pass finally: f.close() print(‘關閉文件‘) except: print("沒有這個文件")
day 1 異常基本功能