当前位置:首页 > IT技术 > 编程语言 > 正文

python 异常处理
2021-10-28 15:15:58

python中,至少有两种可区分的错误:语法错误(syntax error)和异常(exceptions)

目录

语法错误(syntax error)

异常(exception)

处理异常

其他


语法错误(syntax error)

语法错误(syntax error)又称为解析错误(parsing error)

因为python是一种脚本,没有python编译器这种说法,只有python解释器

所以python不存在编译错误,只有解析错误

出现语法错误时,python解释器会输出出现错误的行

并显示一个小箭头,指向行中最早出现错误的点

就像这样

python 异常处理_try


异常(exception)

即便语句或表达式在语法上是正确的

然而当尝试执行脚本时,同样可能会引起错误,这种错误就是异常(exceptions)

当然,这些异常并非在所有情况下都是致命的

异常分很多种类,python解释器会输出内置异常的名称给我们做参考

异常的分类可以参见以下官方文档:

https://docs.python.org/2/library/exceptions.html#bltin-exceptions


处理异常

和java类似,python中我们可以实现处理我们自己选定的异常,例如:

python 异常处理_try_02

运行结果如下,当输入的是int类型的数据时,break跳出while,运行成功

python 异常处理_except_03

当输入的是非int类型时,程序会不断提示你,直到你输入正确的类型(当然我们可以用ctrl+C中断运行)

python 异常处理_exception_04

实际上,用户输入ctrl+C中断程序的运行

其本质上也是昌盛了一种异常,也就是 KeyboardInterrupt 异常

当我们处理异常时:

  • try和except之间的语句被执行
  • 若没有异常发生,except语句将不被执行
  • 若try和except之间的语句被执行时发生了异常,则该部分剩下的语句不再被执行,若except捕捉到了异常的类型,则直接跳转去执行except的语句,然后继续执行try和except之间剩下的语句
  • 若try和except之间的语句被执行时发生了异常,则该部分剩下的语句不再被执行,若except没有捕捉到了异常的类型,那么这就是一个未被处理的异常(Unhandled exception),程序运行被终止

一个try后面可以跟着多个except语句

用于指定处理不同类型的异常

但是只有一个exception中的语句会被执行

一个exception也可以处理多种异常,我们可以用元组来完成(用圆括号,这个不能漏掉),例如:

python 异常处理_异常_05

有的朋友们写程序时,喜欢在最后会加上一个省略异常名称的except字句,作为通配符使用

当然这也写时要特别小心,因为这也写可能会掩盖程序真正的异常所在,最好在后面把异常raise回去,就像这样:

python 异常处理_except_06

当出现I/Oerror时:

python 异常处理_exception_07

若出现ValueError时:

python 异常处理_python_08

python 异常处理_try_09

我们把程序稍微修改一下

python 异常处理_异常_10

此时,就会执行第3个except中的语句

python 异常处理_python_11


其他

在except语句中,我们还可以在异常的后面指定变量

变量与异常的instance绑定(捕获的异常也是对象)参数存储在instance.args中

此外,我们还可以自己定义异常,这些高级的用法本文先不提了

本文摘自 :https://blog.51cto.com/u

开通会员,享受整站包年服务立即开通 >