Python異常對象Exception基礎類異常捕捉
異常對象
Python中遇到錯誤后,會引發(fā)異常。
Python中使用異常對象來表示異常情況。
如果異常對象未被處理或者捕捉,程序就會用所謂的回溯(traceback)來終止執(zhí)行。
下面是一個例子:
def func1():
raise Exception
if __name__ == "__main__":
func1()執(zhí)行之后報錯:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-2.py
Traceback (most recent call last):
File "E:\Codes\python_everything\begining-python\src\08\list8-2.py", line 19, in <module>
func1()
File "E:\Codes\python_everything\begining-python\src\08\list8-2.py", line 15, in func1
raise Exception
Exception異常有不同的類型,Exception是基礎類,下面還有各種子類:
+-- Exception
+-- StopIteration
+-- StandardError
| +-- BufferError
| +-- ArithmeticError
| | +-- FloatingPointError
| | +-- OverflowError
| | +-- ZeroDivisionError
| +-- AssertionError
| +-- AttributeError
| +-- EnvironmentError
| | +-- IOError
| | +-- OSError
| | +-- WindowsError (Windows)
| | +-- VMSError (VMS)
| +-- EOFError
| +-- ImportError
| +-- LookupError
| | +-- IndexError
| | +-- KeyError
| +-- MemoryError
| +-- NameError
| | +-- UnboundLocalError
| +-- ReferenceError
| +-- RuntimeError
| | +-- NotImplementedError
| +-- SyntaxError
| | +-- IndentationError
| | +-- TabError
| +-- SystemError
| +-- TypeError
| +-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError還可以通過繼承Exception來實現(xiàn)自己的類:
class SomeError(Exception): pass
def func2():
raise SomeError
if __name__ == "__main__":
func2()異常捕捉
異常可以被捕捉,需要使用try...except...語句:
class SomeError(Exception): pass
def func2():
raise SomeError
if __name__ == "__main__":
try:
func2()
except SomeError:
print("Some error happened")這里捕捉到了參數(shù),所以就不會回溯:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-3.py Some error happened
但是如果是其它的異常:
def func1():
raise Exception
class SomeError(Exception): pass
def func2():
raise SomeError
if __name__ == "__main__":
try:
func1()
except SomeError:
print("Some error happened")這里的Exception就沒有被捕獲,所以還是會回溯:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-3.py
Traceback (most recent call last):
File "E:\Codes\python_everything\begining-python\src\08\list8-3.py", line 27, in <module>
func1()
File "E:\Codes\python_everything\begining-python\src\08\list8-3.py", line 15, in func1
raise Exception
Exception如果沒有出現(xiàn)異常,則會繼續(xù)往下執(zhí)行,但是這里可以有else語句來執(zhí)行沒有異常時可以執(zhí)行的語句,使整個邏輯更通順:
if __name__ == "__main__":
try:
print("No exception")
except SomeError:
print("Some error happened")
else:
print("No error happened")結果如下:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-3.py No exception No error happened
但是有時即使發(fā)生了無法捕捉的異常,也想要執(zhí)行一些語句,這個時候就可以使用finally語句:
def func1():
raise Exception
class SomeError(Exception): pass
def func2():
raise SomeError
if __name__ == "__main__":
try:
func1()
except SomeError:
print("Some error happened")
else:
print("No error happened")
finally:
print("Do something")Python中更傾向于使用try...except...這樣的語句來代替if...else..語句。
以上就是Python異常對象異常捕捉及Exception基礎類的詳細內容,更多關于Python對象Exception類異常捕捉的資料請關注腳本之家其它相關文章!
相關文章
在dataframe兩列日期相減并且得到具體的月數(shù)實例
今天小編就為大家分享一篇在dataframe兩列日期相減并且得到具體的月數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
VTK與Python實現(xiàn)機械臂三維模型可視化詳解
這篇文章主要介紹了VTK與Python實現(xiàn)機械臂三維模型可視化詳解,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12
Python高級排序sort()函數(shù)使用技巧實例探索
本文詳細介紹sort()函數(shù)的使用,包括基本排序、自定義排序、逆序排序等多種情況,并提供大量示例代碼,以幫助你充分理解和掌握這一函數(shù)的用法,探索更多sort()排序函數(shù)的作用2024-01-01
如何解決Pycharm運行報錯No Python interpreter selected
這篇文章主要介紹了如何解決Pycharm運行時No Python interpreter selected問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05

