Python 3 7 x 介紹 5 錯誤和異常處理

2021-09-10 01:09:08 字數 2493 閱讀 1598

語法錯誤(也稱為解析錯誤)可能是您在學習python時最常見的問題:

>>> while true print('hello world')

file "", line 1

while true print('hello world')

^syntaxerror: invalid syntax

解析器檢測出違規行,並顯示乙個指向檢測到錯誤的行中最早點的「箭頭」。

即使語句或表示式在語法上是正確的,但在嘗試執行它時可能會導致錯誤。

>>> 10 * (1/0)

traceback (most recent call last):

file "", line 1, in zerodivisionerror: division by zero

>>> 4 + spam*3

traceback (most recent call last):

file "", line 1, in nameerror: name 'spam' is not defined

>>> '2' + 2

traceback (most recent call last):

file "", line 1, in typeerror: can't convert 'int' object to str implicitly

最後一行顯示出異常發生

可以編寫處理特定異常的程式。

>>> while true:

... try:

... x = int(input("please enter a number: "))

... break

... except valueerror:

... print("oops! that was no valid number. try again...")

try語句可能有多個except子句,以指定不同異常的處理程式。

... except (runtimeerror, typeerror, nameerror):

... pass

最後乙個except子句可以省略異常名稱,以用作萬用字元。請謹慎使用,因為以這種方式很容易掩蓋真正的程式設計錯誤!

import sys

try:

f = open('myfile.txt')

s = f.readline()

i = int(s.strip())

except oserror as err:

print("os error: ".format(err))

except valueerror:

print("could not convert data to an integer.")

except:

print("unexpected error:", sys.exc_info()[0])

raise

try … except語句有乙個可選的else子句,必須緊跟所有except子句。如果try子句不引發異常,則必須執行else子句。例如:

for arg in sys.ar**[1:]:

try:

f = open(arg, 'r')

except oserror:

print('cannot open', arg)

else:

print(arg, 'has', len(f.readlines()), 'lines')

f.close()

觸發異常

raise語句允許程式設計師強制發生指定的異常。例如:

>>> raise nameerror('hithere')

traceback (most recent call last):

file "", line 1, in nameerror: hithere

自定義異常

程式可以通過建立新的異常類來命名它們自己的異常(有關python類的更多資訊,請參閱類)。異常通常應直接或間接地從exception類派生。

定義清理處理

try語句有另乙個可選子句,用於定義必須在所有情況下執行的清理操作。例如:

>>> try:

... raise keyboardinterrupt

... finally:

... print('goodbye, world!')

...goodbye, world!

keyboardinterrupt

traceback (most recent call last):

file "", line 2, in

CM5 x配置spark錯誤解決

通過cloudera manager 5.x新增spark服務,在建立服務過程中,發現spark服務建立失敗,可以通過控制台錯誤輸出看到如下日誌資訊 perl pi e s etc spark conf.cloudera.spark on yarn yarn conf g opt cm 5.9.2 ...

Python3 7安裝PyQt5的方法

一 系統環境 作業系統 win7 64位 python version 3.7 二 安裝參考 方法1 pip install pyqt5 b.點選download files 因我的電腦系統環境是win7 64位,python是3.7,所以選擇pyqt5 5.11.3 5.11.2 cp35.cp3...

python程式設計 5 錯誤與異常

1 異常處理 import sys try f open myfile.txt s f.readline i int s.strip except oserror as err print os error format err except valueerror print could not c...