1. 程式人生 > >day 1 異常基本功能

day 1 異常基本功能

讀取文件 讀取 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: [Errno 
2] 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 異常基本功能