Python基础教程-错误和异常

错误和异常

语法错误

Python 的语法错误或者称之为解析错。

异常

即便Python程序的语法是正确的,运行期检测到的错误被称为异常。

大多数的异常都不会被程序处理,都以错误信息的形式展现在这里:

异常处理

使用try except 处理异常

1
2
3
4
5
6
try:
#some code
except (RuntimeError, TypeError, NameError):
print("Oops! That was no valid number. Try again ")
pass

抛出异常

Python 使用 raise 语句抛出一个指定的异常。例如:

1
2
3
4
>>> raise NameError('HiThere')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: HiThere

用户自定义异常

你可以通过创建一个新的exception类来拥有自己的异常。异常应该继承自 Exception 类,或者直接继承,或者间接继承,例如:

1
2
3
4
5
6
7
8
9
10
>>> class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)

>>> try:
raise MyError(2*2)
except MyError as e:
print('My exception occurred, value:', e.value)

final 定义清理行为

try 语句还有另外一个可选的子句,它定义了无论在任何情况下都会执行的清理行为。 例如:

1
2
3
4
>>> try:
... raise KeyboardInterrupt
... finally:
... print('Goodbye, world!')

以上例子不管 try 子句里面有没有发生异常,finally 子句都会执行。