欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python異常處理例題整理

系統 1752 0

什么是異常?

異常是Python對象,表示一個錯誤。當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。在程序運行過程中,總會遇到各種各樣的錯誤,有的錯誤是程序編寫有問題造成的

還有一類錯誤是完全無法在程序運行過程中預測的:一切異常皆是對象

系統定義的異常:

  • BaseException 所有異常的基類,父類
  • Exception 常規錯誤的基類
  • StandardError 所有的內建標準異常的基類,標準化錯誤
  • ImportError? 導入模塊錯誤
  • ArithmeticError 所有數值計算錯誤的基類
  • FloatingPointError 浮點計算錯誤
  • AssertionError? 斷言語句失敗
  • AttributeError? 對象沒有這個屬性
  • Warning 警告的基類警告類

也可以自定義異常,創建類,

異常處理的作用是:

1:不想讓程序終止

2:如果出錯了,需要特殊處理

異常處理的語法是:try/except語句,有的后面也會加else

            
try:
  a = 2
  b = 0
  print a / b
except:
  print '出錯啦!!!'

print 1111
          

try ....except...else 語句,當沒有異常發生時,else中的語句將會被執行。

            
a=10
b=1
try:
  c = b/ a
  print c
except (IOError ,ZeroDivisionError),x:
  print x
else:
  print "no error"
print "done"
          

使用except而不帶任何異常類型: except,后面不寫,表示捕獲所有異常

            
try:
  正常的操作
  ......................
except:
  發生異常,執行這塊代碼
  ......................
else:
  如果沒有異常執行這塊代碼
          

使用except而帶多種異常類型: except,后面寫,捕獲對應的異常,

except:

0.不寫異常代表捕獲一些類型的錯誤
1.可以一次捕捉多個異常 (exception1, exception2)
2.多個except:
不要求從小到大捕捉
3.可以在except語句塊后面加一個else,當沒有錯誤發生時,會自動執行else語句
4.e代表當前異常的實例 print可以顯示錯誤信息? , e? or as e

5.如果想要輸出詳細堆棧信息,使用import traceback traceback.print_exc()

舉例說明5:雖然錯誤堆棧信息打印出來了,但是程序還是在繼續執行的

            
import traceback
try:
  print 5/0
except (TypeError,ZeroDivisionError) as e:
  traceback.print_exc()
  print e.message
else:
  print 3
print 2

          

運行結果:

Python異常處理例題整理_第1張圖片

如果想打印異常的信息,可以 設置as 別名,然后通過別名.message,來捕獲異常信息,如下例子所示

            
try:
  正常的操作
  ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
  發生以上多個異常中的一個,執行這塊代碼
  ......................
else:
  如果沒有異常執行這塊代碼
          
            
except ZeroDivisionError: ##捕獲被除數不能等于0的異常
except BaseException:##也可以直接寫這個所有異常的基類
          
            
try:
  a = 2
  b = 0
  print a / b
except ZeroDivisionError as e :
  print e.message #捕獲異常信息
  print '出錯啦!!!'

print 1111
          

執行結果:

integer division or modulo by zero
出錯啦!!!

1111

try except的兩個作用:

  • 可以提高代碼健壯性,
  • 捕獲異常,巧妙的避開報錯的信息

try-finally 語句:try-finally 語句無論是否發生異常都將執行最后的代碼。

            
try:
<語句>
finally:
<語句>  #退出try時總會執行
raise
          

finally: # 不管try except是否出錯,都會打印出finally文件里面的東西,可以看下如下例子:

1:如果try里面東西沒有執行成功,try里面的print也不會打印的,

2:finally里面的東西不管try except是否出錯,都會打印

            
def jianfa(a,b):
  if a
            
            
          

拋出異常

拋出解釋:如果錯誤沒有被捕獲,它就會一直往上拋,最后被Python解釋器捕獲,打印一個錯誤信息,然后程序退出:語法:raise 異常類名 (錯誤信息)

練習題:#1.編寫一個計算減法的方法,當第一個數小于第二個數時,拋出“被減數不能小于減數"的異常

            
def jianfa(a,b):
  if a
            
            
          

執行結果如下:

Python異常處理例題整理_第2張圖片

練習題:

1.從開發的代碼庫中得到一組數據,表示每個文件的代碼變更情況

{'login.py': 'a 8 d 2 u 3', 'order.py': 'a 15 d 0 u 34', 'info.py': 'a 1 d 20 u 5'}

其中 a表示新增行數,d表示刪除行數,u表示修改行數。login.py的變更行數為13

要求:統計出每個文件的變更行數

第一種方法:通過if語句,判斷

            
data={'login.py': 'a 8 d 2 u 3', 'order.py': 'a 15 d 0 u 34', 'info.py': 'a 1 d 20 u 5'}
for k,v in data.items():
  sum=0
  for x in data[k].split(' '):
    if x.isdigit():
      sum+=int(x)
  print '文件:%s,共變更%d行'%(k,sum)
          

執行結果:

文件:login.py,共變更13行
文件:info.py,共變更26行

文件:order.py,共變更49行

第二種方法:通過try 方法:

            
data={'login.py': 'a 8 d 2 u 3', 'order.py': 'a 15 d 0 u 34', 'info.py': 'a 1 d 20 u 5'}
for k,v in data.items():
  sum=0
  for x in data[k].split(' '):
    try:
      sum+=int(x) #通過try except方法捕獲異常,巧妙的實現
    except:
      pass
  print '文件:%s,共變更%d行'%(k,sum)
          

2 定義一個函數func(listinfo) listinfo:為列表,listinfo = [133, 88, 24, 33, 232, 44, 11, 44],返回列表小于100,且為偶數的

            
def func(listinfo):
  for x in listinfo:
    try:
      result = filter(lambda k: k < 100 and k % 2 == 0, listinfo)
    except Exception as a:
      return a
    else:
      return result
print func([133, 88, 24, 33, 232, 44, 11, 44])
          

輸出:[88, 24, 44, 44]

            
class my_error(Exception):
  def __init__(self, stri):
    self.leng = len(stri)

  def process(self):
    if self.leng < 5:
      return 'The input is of length %s,expecting at least 5' % self.leng
    else:
      return 'print success'


try:
  raise my_error('sssss')
except my_error as e:
  print e.process() 
          


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色拍拍在精品视频69影院在线 | 天天干天天色 | 天天操天天透 | 精品国产黄a∨片高清在线 亚洲3atv精品一区二区三区 | 99热这里只有免费国产精品 | chinese 军人 gay xx 呻吟 | 亚洲aⅴ | 国产99久久精品一区二区 | 亚洲午夜精品一区二区三区 | 一区二区av在线 | 国产成人精品一区二区三区四区 | 欧亚乱熟女一区二区在线 | 免费视频大片在线观看 | 欧美国产日韩在线 | 日本爽爽爽爽爽爽免费 | 成人嘿嘿视频网站在线 | 泰国一级淫片在线观看 | 欧美成人欧美激情欧美风情 | 久久久成 | 锵锵锵锵锵锵锵锵锵好湿好大 | 5月激情网 | 最新伦理片| 中文字幕在线一区 | 国产精品福利在线观看秒播 | 9久热这里只有精品视频在线观看 | 日本午夜大片免费观看视频 | 婷婷国产在线观看 | 欧美精品一区三区 | 99热国产这里只有精品9九 | 欧美一级片在线播放 | 毛片毛片毛片 | 91国在线啪| 奇米奇米| 日本免费成人 | 日韩中文字幕网站 | 国产精品三级在线 | 日本一道本视频 | 亚洲天堂av在线 | 欧美性高清视频免费看www | 久爱www成人网免费视频 | 久久久激情视频 |