Python學習打卡 day09(錯誤處理)

2021-09-20 21:45:00 字數 2155 閱讀 2421

捕獲異常:try…except…finally

"""

try 捕獲異常

"""try

:print

('try...'

) r =10/

int(

'0')

print

('result:'

, r)

except valueerror as e:

print

('valueerror:'

, e)

except zerodivisionerror as e:

print

('zerodivisionerror:'

, e)

else

:print

('no error '

)finally

:print

('finally....'

)print

('end'

)# 不需要在每個可能出錯的地方去捕獲錯誤,只要在合適的層次去捕獲錯誤就可以了

deffoo

(s):

return10/

int(s)

defbar

(s):

return foo(s)*2

defmain()

:try

: bar(

'0')

except exception as e:

print

('error:'

, e)

finally

:print

('finall......'

)main(

)

記錄錯誤:logging

"""

記錄錯誤:

1-python內建的logging模組可以非常容易地記錄錯誤資訊

2-程式列印完錯誤資訊後會繼續執行,並正常退出

"""import logging

deffoo

(s):

return10/

int(s)

defbar

(s):

return foo(s)*2

defmain()

:try

: bar(

'0')

except exception as e:

logging.exception(e)

main(

)print

('end~~~'

)

丟擲錯誤:raise

"""

丟擲錯誤:

--如果要丟擲錯誤,首先根據需要,可以定義乙個錯誤的class,選擇好繼承關係,然後,用raise語句丟擲乙個錯誤的例項:

"""class

fooerror

(valueerror)

:pass

deffoo

(s):

n =int(s)

if n ==0:

raise fooerror(

'invalid value: %s'

% s)

return

10/ n

foo(

0)

另外一種錯誤處理方式

"""

丟擲錯誤:raise語句如果不帶引數,就會把當前錯誤原樣丟擲

"""def

foo(s)

: n =

int(s)

if n ==0:

raise valueerror(

'invalid value: %s'

% s)

return

10/ n

defbar()

:try

: foo(

'0')

except valueerror as e:

print

('valueerror!'

)raise

bar(

)

python學習系列 day09

一 圖形介面 1 tkinter 2 turtle 二 網路程式設計 1 tcp程式設計 1 客戶端 import socket s socket.socket socket.af inet,socket.sock stream af inet表示利用的ipv4,af inet6表示用ipv6。so...

python學習筆記day09 函式

函式的定義和函式的呼叫不是一回事,程式執行時,遇到定義函式,只會執行定義函式名處,裡面的函式體這個時候是不會執行的 只有到呼叫函式處才會執行裡面的函式體 沒有返回值 無 return 返回none 只有 return 返回none return none 返回none 有返回值 可以返回任意資料型別...

python之路day09 函式

s 金老闆啊 print len s 內建函式 s 金老闆啊 def my len i 0 for k in s i 1 print i print my len none s 金老闆啊 def my len 自定義函式 i 0 for k in s i 1 print i return i 返回值...