Python中的异常是什么?

Python中的异常是什么?

异常是程序执行过程中发生的一种事件,它打断了程序指令的正常流程。一般情况下,当Python脚本遇到无法处理的情况时,会引发一个异常。异常是表示错误的Python对象。

当Python脚本引发异常时,它必须立即处理异常,否则就会终止并退出。

更多Python相关文章,请阅读:Python 教程

处理异常

如果您有一些可能引发异常的可疑代码,可以将其放在一个 try :块中来保护您的程序。在try:块后面,包括一个 except :语句,后面跟着一段代码,该代码尽可能优雅地处理问题。

语法

这里是try….except…else块的简单语法 –

try:
   在这里执行您的操作;
   ......................
except ExceptionI:
   如果有ExceptionI,则执行此块。
except ExceptionII:
   如果有ExceptionII,则执行此块。
   ......................
else:
   如果没有异常,则执行此块。

以下是关于上述语法的几个重要点 –

  • 一个try语句可以有多个except语句。当try块包含可能引发不同类型异常的语句时,这非常有用。
  • 您还可以提供一个通用的except子句,它处理任何异常。
  • 在除了except子句之外,您还可以包括一个else子句。如果try:块中的代码没有引发异常,则else块中的代码会执行。
  • else块是放置不需要try:块保护的代码的好地方。

实例

此示例打开一个文件,在文件中写入内容,并因为一切顺利而平稳地退出 –

#!/usr/bin/python
try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"
   fh.close()

输出

这将产生以下结果 –

Written content in the file successfully

实例

此示例尝试打开一个您没有写入权限的文件,因此会引发异常 –

#!/usr/bin/python
try:
   fh = open("testfile", "r")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"

输出

这将产生以下结果 –

Error: can't find file or read data

没有异常的except子句

您还可以使用未定义任何异常的except语句,如下所示 –

try:
   在这里执行您的操作;
   ......................
except:
   如果有任何异常,则执行此块。
   ......................
else:
   如果没有异常,则执行此块。

这种 try-except 语句捕获发生的所有异常。虽然使用这种try-except语句不被视为良好的编程实践,因为它捕获了所有异常,但并未使程序员确定可能发生的问题的根本原因。

含多个异常的except子句

您也可以使用相同的except语句来处理多个异常,如下所示 –

try:
   # 在此处执行操作
   ......................
except(Exception1[, Exception2[,... ExceptionN]]]):
   # 如果在指定的异常列表中有任何异常,
   # 则执行此块。
   ......................
else:
   # 如果没有异常就执行此块。

try-finally子句

您可以使用 finally :块和 try :块。finally块是一个必须执行的任何代码的位置,无论try-block是否引发异常。try-finally语句的语法如下 −

try:
   # 在此处执行操作
   ......................
   # 可能由于任何异常,此块可能被跳过。
finally:
   # 总是会执行此块。
   ......................

您不能在finally子句中使用else子句。

示例

#!/usr/bin/python
try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
finally:
   print "Error: can\'t find file or read data"

输出

如果您没有写入模式打开该文件的权限,那么将产生以下结果−

Error: can't find file or read data

同样的示例可以被更干净地编写,如下所示−

示例

#!/usr/bin/python
try:
   fh = open("testfile", "w")
   try:
      fh.write("This is my test file for exception handling!!")
   finally:
      print "Going to close the file"
      fh.close()
except IOError:
   print "Error: can\'t find file or read data"

当在try块中抛出异常时,执行立即传递给finally块。在finally块中的所有语句执行完毕后,如果在try-except语句的下一层中存在,则再次引发异常并在except子句中处理该异常。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程