Python 错误和异常

本文介绍了 Python 中的语法错误、异常、异常处理和抛出异常。语法错误会被解释器指出,运行期错误为异常。Python 用 try-except 语句处理异常,还可搭配 else 和 finally 子句。使用 raise 语句能抛出指定异常。

语法错误


Python 解释器会输出出现语法错误的那一行,并显示一个箭头,指向行里检测到的第一个错误。

>>> while True print('Hello')
  File "<stdin>", line 1
    while True print('Hello')
                   ^
SyntaxError: invalid syntax

异常


即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。

异常以不同的类型出现,这些类型都作为信息的一部分打印出来。错误信息的前面部分显示了异常发生的上下文,并以调用栈的形式显示具体信息。

异常处理


通常,异常不会被程序自动处理。Python 处理异常会用到 try-except 语句。

语法结构:

try:
    <语句块1>
except <异常类型>:
    <语句块2>

try 语句的工作原理如下:

  • 首先,执行 try 子句的语句块。
  • 如果没有异常发生,则跳过 except 子句。
  • 如果发生了异常,则跳过 try 子句中剩余的语句部分。然后,如果异常类型和 except 关键字后面的异常类型匹配(同一个类或者是它的基类),则执行 except 子句的语句块,然后继续执行 try 语句之后的代码。
  • 如果发生的异常和 except 子句中的异常不匹配,则将其传递到外部的 try 语句中;如果没有找到处理程序,则它是一个未处理异常,执行将停止并显示异常信息。

try … except 语句可以带有一个 else 子句,放在所有 except 子句之后。当 try 子句没有抛出异常时,需要执行一些代码,可以使用这个子句。有发生异常时不会执行 else 子句。

语句最后还可以加上一个 finally 子句,不管是否有异常发生,该子句都会被执行。当 try 语句中发生了未被 except 捕获的异常,在 finally 子句执行完成后,异常会被重新抛出。

抛出异常


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

>>> raise NameError('Here')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: Here

要抛出的异常由 raise 的唯一参数标识。它必须是一个异常的实例或者是异常的类(继承 Exception 类)。

如果你需要明确一个异常是否抛出,但不想处理它,raise 语句可以再次抛出该异常。

>>> try:
...     raise NameError('Here')
... except NameError:
...     print('An exception flew by!')
...     raise
...
An exception flew by!
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: Here

 

转载于:https://www.cnblogs.com/yutb/p/10815381.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值