python 异常处理

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

目录

语法错误(syntax error)

异常(exception)

处理异常

其他


语法错误(syntax error)

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

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

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

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

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

就像这样


异常(exception)

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

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

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

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

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

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


处理异常

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

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

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

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

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

当我们处理异常时:

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

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

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

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

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

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

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

当出现I/Oerror时:

若出现ValueError时:

我们把程序稍微修改一下

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


其他

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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值