Python學習06 錯誤與異常

2021-09-25 12:43:05 字數 3900 閱讀 1284

for i in

range(10

)print

(i)輸出

for i in

range(10

)^syntaxerror: invalid syntax

python的語法分析器完成,檢測到錯誤所在檔案和行號。以向上箭頭標記錯誤位置。最後顯示錯誤型別。

當程式檢測到錯誤,直譯器就無法繼續執行下去,丟擲異常,終止程式。

系統根據不同的錯誤,丟擲不同的異常

常見異常:

異常描述

nameerror

嘗試訪問乙個沒有申明的變數

zerodivisionerror

除數為 0

syntaxerror

語法錯誤

indexerror

索引超出序列範圍

keyerror

請求乙個不存在的字典關鍵字

filenotfounderror

檔案未發現錯誤(比如你要讀的檔案不存在)

attributeerror

嘗試訪問未知的物件屬性

modulenotfounderror

模組未發現

indentationerror

縮排

(1)

print

(sr)

nameerror: name 'sr'

isnot defined(2

)for i in

range(10

)print

(i)syntaxerror: invalid syntax(3

)dic=

dic[

'name'

]print

(dic)

keyerror:

'name'(4

)import tts

modulenotfounderror: no module named 'tts'(5

)for i in

range(10

):print

(i)indentationerror: expected an indented block

程式一旦發生錯誤,程式就無法繼續執行

為了程式健康,可做相關異常處理。

try…except…

try

: try_statements

except

[exceptiontype [

as identifier]]:

except_statements

[else

: else_statements]

[finally

: finally_statements]

except子句

else子句

finally子句

try

: x =

eval

(input

('請輸入被除數x:\t'))

y =eval

(input

('請輸入除數y:\t'))

z = x/y

except zerodivisionerror:

print

('除數不可以為0.'

)except nameerror:

print

('請檢查變數是否賦值。'

)else

:print

('未捕捉到異常,x/y='

,z)finally

:print

('離開try ... except 模組。'

)請輸入被除數x:

8請輸入除數y:

0除數不可以為0

.離開try..

.except 模組。

try

: x =

eval

(input

('請輸入被除數x:\t'))

y =eval

(input

('請輸入除數y:\t'))

z = x/y

except exception as e:

#捕獲所有異常

print

(e.args)

else

:print

('未捕捉到異常,x/y='

,z)finally

:print

('離開try ... except 模組。'

)

請輸入被除數x:

8請輸入除數y:0(

'division by zero',)

離開try..

.except 模組。

try

: x =

eval

(input

('請輸入被除數x:\t'))

y =eval

(input

('請輸入除數y:\t'))

z = x/y

except

(zerodivisionerror, nameerror)

as e:

#處理多個異常的except語句

print

(e.args)

else

:print

('未捕捉到異常,x/y='

,z)finally

:print

('離開try ... except 模組。')(

1)請輸入被除數x:

8請輸入除數y:0(

'division by zero',)

離開try..

.except 模組。(2

)請輸入被除數x:12,

請輸入除數y:

2離開try..

.except 模組。

traceback (most recent call last)

: file "d:/pythonwork/day06/day06.py"

, line 26,in

z = x/y

typeerror: unsupported operand type

(s)for/:

'tuple'

and'int'

除了系統丟擲的異常,我們可以用raise語句自己觸發異常。

格式:

raise

[exception [

, args [

, traceback]

]

try

:raise nameerror(

"sorry, error occurs"

)except nameerror:

print

('捕捉到異常'

)finally

:print

('離開try ... except 模組。'

)捕捉到異常

離開try..

.except 模組。

assert condition
邏輯上相當於:

if

not condition:

raise assertionerror(

)

為斷言新增乙個異常引數

assert expression [

, args]

arguments

li =[1

,2]assert

len(li)

>=5,

'列表元素個數小於5'

assertionerror: 列表元素個數小於5

python異常與錯誤學習

1 異常簡介 看如下示例 print test begin f open 123.txt r 用唯讀模式開啟乙個不存在的檔案,會報錯 開啟乙個不存在的檔案123.txt,當找不到123.txt 檔案時,就會丟擲給我們乙個ioerror型別的錯 誤,no such le or directory 12...

python 錯誤與異常

錯誤在執行前修改,邏輯錯誤無法修改 執行時,異常產生,檢查到錯誤且直譯器認為是異常,丟擲異常 異常處理,截獲異常,忽略或者終止程式處理異常 try try suite except exception e exception blocktry aexcept nameerror,e print ca...

python 錯誤與異常

開發人員在編寫程式的時候難免會遇到錯誤,那遇到錯誤要如何找到錯誤並處理異常呢?本篇主要實現異常的處理方法。一 錯誤分類 1.語法錯誤 syntaxerror 2.執行時錯誤 這種包括很多異常的型別,eg nameerror zerodivisionerror等 二 異常處理的基本語法 try 執行 ...