成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章帶你弄懂Python異常簡(jiǎn)介和案例分析

開(kāi)發(fā) 后端
本文講解了Python基礎(chǔ)之異常知識(shí) ,介紹了常見(jiàn)的異常操作,用豐富的案例,幫助大家更好的去了解異常常見(jiàn)的的基礎(chǔ)操作。

[[405860]]

大家好,我是Go進(jìn)階者,今天給大家分享一些Python基礎(chǔ) (異常),一起來(lái)看看吧~

一、異常簡(jiǎn)介

當(dāng)Python檢測(cè)到一個(gè)錯(cuò)誤時(shí),解釋器就無(wú)法繼續(xù)執(zhí)行了,反而出現(xiàn)了一些錯(cuò)誤的提示,這就是所謂的"異常"。

二、案例分析

打開(kāi)一個(gè)不存在的文件123.txt,當(dāng)找不到123.txt 文件時(shí),就會(huì)拋出給我們一個(gè)IOError類(lèi)型的錯(cuò)誤,No such file or directory:123.txt (沒(méi)有123.txt這樣的文件或目錄)。

  1. print'-----test--1---' 
  2. open('123.txt','r'
  3. print '-----test--2---' 

運(yùn)行結(jié)果:

<1>捕獲異常 try...except...

例:

  1. try: 
  2.     print('-----test--1---'
  3.     open('123.txt','r'
  4.     print('-----test--2---'
  5. except IOError: 
  6.     pass 

運(yùn)行結(jié)果:

說(shuō) 明 :

  • 此程序看不到任何錯(cuò)誤,因?yàn)橛胑xcept 捕獲到了IOError異常,并添加了處理的方法。
  • pass 表示實(shí)現(xiàn)了相應(yīng)的實(shí)現(xiàn),但什么也不做;如果把pass改為print語(yǔ)句,那么就會(huì)輸出其他信息。

小總結(jié) :

  • 把可能出現(xiàn)問(wèn)題的代碼,放在try中。
  • 把處理異常的代碼,放在except中。

<2> except捕獲多個(gè)異常

例 :

  1. try: 
  2.     print(num) 
  3. except IOError: 
  4.     print('產(chǎn)生錯(cuò)誤了'

運(yùn)行結(jié)果 :

想一想:

上例程序,已經(jīng)使用except來(lái)捕獲異常了,為什么還會(huì)看到錯(cuò)誤的信息提示?

答:

except捕獲的錯(cuò)誤類(lèi)型是IOError,而此時(shí)程序產(chǎn)生的異常為 NameError ,所以except沒(méi)有生效。

修改后的代碼為 :

  1. try: 
  2.    print(num) 
  3. except NameError: 
  4.     print('產(chǎn)生錯(cuò)誤了'

運(yùn)行結(jié)果

實(shí)際開(kāi)發(fā)中,捕獲多個(gè)異常的方式,如下:

  1. #coding=utf-8 
  2. try: 
  3.     print('-----test--1---'
  4.     open('123.txt','r') # 如果123.txt文件不存在,那么會(huì)產(chǎn)生 IOError 異常 
  5.     print('-----test--2---'
  6.     print(num)# 如果num變量沒(méi)有定義,那么會(huì)產(chǎn)生 NameError 異常 
  7.  
  8. except (IOError,NameError):  
  9.     #如果想通過(guò)一次except捕獲到多個(gè)異常可以用一個(gè)元組的方式 

注意:

當(dāng)捕獲多個(gè)異常時(shí),可以把要捕獲的異常的名字,放到except 后,并使用元組的方式僅進(jìn)行存儲(chǔ)。

<3>獲取異常的信息描述

  1. try: 
  2.     open("a.txt"
  3. except(NameError,IOError) as result: 
  4.     print("捕抓到異常"
  5.     print("信息展示:",result) 

運(yùn)行結(jié)果:

<4>捕獲所有異常

  1. try: 
  2.     open("a.txt"
  3. except Exception as result: 
  4.     print("捕抓到異常"
  5.     print("信息展示:",result) 

運(yùn)行結(jié)果:

<5> else

咱們應(yīng)該對(duì)else并不陌生,在if中,它的作用是當(dāng)條件不滿(mǎn)足時(shí)執(zhí)行的實(shí)行;同樣在try...except...中也是如此,即如果沒(méi)有捕獲到異常,那么就執(zhí)行else中的事情。

  1. try: 
  2.     num = 100 
  3.     print(num) 
  4. except NameError as errorMsg: 
  5.     print('產(chǎn)生錯(cuò)誤了:%s' % errorMsg) 
  6. else
  7.     print('沒(méi)有捕獲到異常,真高興'

運(yùn)行結(jié)果如下:

<6> try...finally...

try...finally...語(yǔ)句用來(lái)表達(dá)這樣的情況:

在程序中,如果一個(gè)段代碼必須要執(zhí)行,即無(wú)論異常是否產(chǎn)生都要執(zhí)行,那么此時(shí)就需要使用finally。比如文件關(guān)閉,釋放鎖,把數(shù)據(jù)庫(kù)連接返還給連接池等。

demo:

  1. import time 
  2. try: 
  3.     f = open('test.txt'
  4.     try: 
  5.         while True
  6.             content = f.readline() 
  7.             if len(content) == 0: 
  8.                 break 
  9.             time.sleep(2) 
  10.             print(content) 
  11.     except
  12.         #如果在讀取文件的過(guò)程中,產(chǎn)生了異常,那么就會(huì)捕獲到 
  13.         #比如 按下了 ctrl+c 
  14.         pass 
  15.     finally: 
  16.         f.close() 
  17.         print('關(guān)閉文件'
  18. except
  19.     print("沒(méi)有這個(gè)文件"

運(yùn)行結(jié)果:

說(shuō)明:

test.txt文件中每一行數(shù)據(jù)打印,但是我有意在每打印一行之前用time.sleep方法暫停2秒鐘。這樣做的原因是讓程序運(yùn)行得慢一些。在程序運(yùn)行的時(shí)候,按Ctrl+c中斷(取消)程序。

我們可以觀(guān)察到KeyboardInterrupt異常被觸發(fā),程序退出。但是在程序退出之前,finally從句仍然被執(zhí)行,把文件關(guān)閉。

三、總結(jié)

本文講解了Python基礎(chǔ)之異常知識(shí) ,介紹了常見(jiàn)的異常操作,用豐富的案例,幫助大家更好的去了解異常常見(jiàn)的的基礎(chǔ)操作。

 

責(zé)任編輯:姜華 來(lái)源: Go語(yǔ)言進(jìn)階學(xué)習(xí)
相關(guān)推薦

2024-11-27 16:38:07

2021-06-21 06:32:04

Python異常傳遞s自定義異常

2022-05-30 18:18:23

NoSQL數(shù)據(jù)庫(kù)

2024-12-26 16:49:20

Python字典元素

2021-06-30 10:01:09

Python字典代碼

2021-06-26 09:40:09

Python列表循環(huán)

2021-07-03 10:02:30

Python字符串瀏覽器

2018-10-22 12:50:20

CDN網(wǎng)絡(luò)內(nèi)容發(fā)布網(wǎng)絡(luò)

2021-05-15 09:18:04

Python進(jìn)程

2022-02-21 09:44:45

Git開(kāi)源分布式

2021-06-30 00:20:12

Hangfire.NET平臺(tái)

2023-05-12 08:19:12

Netty程序框架

2024-05-10 13:46:36

Python進(jìn)制

2021-06-05 10:02:15

Python進(jìn)制數(shù)據(jù)類(lèi)型

2021-06-09 09:00:11

Python數(shù)據(jù)類(lèi)型基礎(chǔ)

2018-04-09 16:35:10

數(shù)據(jù)庫(kù)MySQLInnoDB

2021-01-07 11:10:47

關(guān)鍵字

2023-01-05 07:52:36

高可用架構(gòu)消息隊(duì)列

2021-05-15 10:16:14

Python匿名函數(shù)

2024-04-17 13:21:02

Python匿名函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 在线免费国产视频 | 天天插天天干 | 一级片视频免费观看 | 亚洲狠狠 | 美女视频一区二区 | 国产视频第一页 | 中文字幕一区在线 | 国产精品久久久久久高潮 | 欧美a免费 | 91素人| av中文字幕在线 | 欧美精品在线看 | 日本在线免费视频 | 成人在线视频一区 | 国产三级在线观看播放 | 欧美性生交大片免费 | 高清欧美性猛交xxxx黑人猛交 | 国产精品视频久久 | 亚洲精品一区二区另类图片 | 欧美成人影院在线 | 欧美在线视频二区 | 欧美久久一区二区三区 | 欧美日韩久久精品 | a在线视频| 一区中文字幕 | 一区二区三区在线播放 | 亚洲国产成人av好男人在线观看 | 美女视频黄色片 | 欧美日韩亚洲在线 | 久草视频在线播放 | 亚洲精品视频二区 | 超碰人人做 | 色999日韩 | 久久国产视频一区 | 日韩精品1区2区3区 爱爱综合网 | 日韩性在线 | 天天综合网7799精品 | 亚洲一区二区在线 | 午夜三级网站 | 免费一区二区三区 | 欧美大片久久久 |