python有许多内置异常。比如我们常见的TypeError, AttributeError, ValueError等等。 实际上所有的异常都源自一个基类BaseException。 注意并不是Exception类。我们一般在异常处理时捕获的称之为Concrete exceptions,用Exception可以捕获所有这些 Concrete exceptions。
各种异常并不是毫无关系的,有些异常是有继承关系的。 比如ModuleNotFoundError是ImportError的子类。 except子句中使用ImportError可以同时捕获ImportError和MoudleNotFoundError这两种异常。
但像Syntax Error这种异常是语法错误,python解释器会立即抛出,根本不会运行到我们的try ... catch语句里。
下面的示例是一个语法错误
while True print('Hello world')
File "<stdin>", line 1
while True print('Hello world')
^^^^^
SyntaxError: invalid syntax
try ... except 语句进行异常捕获和处理。
try:
x = int('abc')
except ValueError:
print("Oops! That was no valid number. Try again...")
但如果except里没对捕获到的异常类型做处理,只异常会继续抛出。
try:
x = int('abc')
except NameError:
print("处理一个NameError")
遇到异常:
Traceback (most recent call last):
File "F:\RolandWork\PythonProjects\studyPython\forTest.py", line 2, in <module>
x = int('abc')
^^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'abc'
标签:Exception,Handling,int,except,try,abc,print,异常
From: https://www.cnblogs.com/rolandhe/p/18685710