Python异常

SyntaxError语法错误
IndentationError多打一个空格

NameError

当有人试图访问一个为定义的变量则会发生这样的错误
最后一行包含了错误的详细信息,其余行显示它是如何发生的

TypeError

当操作或函数应用于不适当类型的对象时英法,一个常见的例子是对整数和字符串做加法。

处理异常

try...except来处理异常
首先,执行 try 子句 (在 try 和 except 关键字之间的部分)。

如果没有异常发生,except 子句 在 try 语句执行完毕后就被忽略了。

如果在 try 子句执行过程中发生了异常,那么该子句其余的部分就会被忽略。

如果异常匹配于 except 关键字后面指定的异常类型,就执行对应的 except 子句。然后继续执行 try 语句之后的代码。

如果发生了一个异常,在 except 子句中没有与之匹配的分支,它就会传递到上一级 try 语句中。

如果最终仍找不到对应的处理语句,它就成为一个 未处理异常,终止程序运行,显示提示信息。

首先我输入了一个合适的浮点值,解释器返回输出这个值。

然后我输入以逗号分隔的值,抛出 ValueError 异常,except 子句捕获之,并且打印出错误信息。

第三次我按下 Ctrl + C ,导致了 KeyboardInterrupt 异常发生,这个异常并未在 except 块中捕获,因此程序执行被中止。

一个空的 except 语句能捕获任何异常。阅读下面的代码:

抛出异常

使用raise抛出异常

定义清理行为

try 语句还有另一个可选的 finally 子句,目的在于定义在任何情况下都一定要执行的功能。例如:

>>> try:
...     raise KeyboardInterrupt
... finally:
...     print('Goodbye, world!')
...
Goodbye, world!
KeyboardInterrupt
Traceback (most recent call last):
  File "<stdin>", line 2, in ?

不管有没有发生异常,finally 子句 在程序离开 try 后都一定会被执行。当 try 语句中发生了未被 except 捕获的异常(或者它发生在 except 或 else 子句中),在 finally 子句执行完后它会被重新抛出。

在真实场景的应用程序中,finally 子句用于释放外部资源(文件或网络连接之类的),无论它们的使用过程中是否出错

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Python异常处理 异常概念: 异常:就是不正常的情况,程序开发过程中错误和BUG都是补充正常的情况 异常发生的...
    youngkun阅读 943评论 0 4
  • 异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,清晰的错误信息更能帮助你...
    妄心xyx阅读 562评论 0 0
  • Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以...
    极客Array阅读 377评论 0 0
  • 异常处理 异常Exception 错误 Error :错误是可以避免的逻辑错误:算法写错了,加法写成了减法笔误:变...
    vampire6阅读 1,091评论 0 0
  • Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以...
    木易林1阅读 290评论 0 0