最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

详解在Python中处理异常的教程

来源:动视网 责编:小采 时间:2020-11-27 14:33:41
文档

详解在Python中处理异常的教程

详解在Python中处理异常的教程:什么是异常? 异常是一个事件,其中一个程序,破坏程序的指令的正常流的执行过程中而发生的。一般情况下,当一个Python脚本遇到一些情况不能处理,就抛出一个异常。异常是一个Python对象,它表示一个错误。 当Python脚本抛出一个异常,它必须处理异常,否则将
推荐度:
导读详解在Python中处理异常的教程:什么是异常? 异常是一个事件,其中一个程序,破坏程序的指令的正常流的执行过程中而发生的。一般情况下,当一个Python脚本遇到一些情况不能处理,就抛出一个异常。异常是一个Python对象,它表示一个错误。 当Python脚本抛出一个异常,它必须处理异常,否则将


什么是异常?

异常是一个事件,其中一个程序,破坏程序的指令的正常流的执行过程中而发生的。一般情况下,当一个Python脚本遇到一些情况不能处理,就抛出一个异常。异常是一个Python对象,它表示一个错误。

当Python脚本抛出一个异常,它必须处理异常,否则将立即终止。
处理异常:

如果有可能会引发异常的一些可疑的代码,就可以通过将可疑的代码在一个try块:保卫你的程序。在try块,包括以下情况except:语句,其次是代码,作为优雅的处理问题,尽可能块。
语法

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

try:
 You do your operations here;
 ......................
except ExceptionI:
 If there is ExceptionI, then execute this block.
except ExceptionII:
 If there is ExceptionII, then execute this block.
 ......................
else:
 If there is no exception then execute this block. 

这里有一些关于上述语法要点:

  • 单个try语句可以有多个不同的语句。当try块中包含可能会引发不同类型的异常语句,这是很有用的。
  • 也可以提供一个通用的except子句,它用来处理任何异常。
  • except子句后,可以包括其他子句。块没有引发异常:在别的块中的代码,如果在try中的代码执行。
  • 在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子句无异常:

    还可以使用不同的定义如下无异常的声明:

    try:
     You do your operations here;
     ......................
    except:
     If there is any exception, then execute this block.
     ......................
    else:
     If there is no exception then execute this block. 
    
    

    try-except 语句捕获所有出现的异常。使用这种try-except 声明不被认为是一个良好的编程习惯,但因为它捕获所有异常,但不会使程序员找出可能出现的问题的根本原因。
    在except子句的多个异常:

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

    try:
     You do your operations here;
     ......................
    except(Exception1[, Exception2[,...ExceptionN]]]):
     If there is any exception from the given exception list, 
     then execute this block.
     ......................
    else:
     If there is no exception then execute this block. 
    
    

    try-finally 语句:

    可以使用finally:块连同try:块。在try块是否引发异常或没有任何代码 finally块是一个必须执行的块。try-finally语句的语法是这样的:

    try:
     You do your operations here;
     ......................
     Due to any exception, this may be skipped.
    finally:
     This would always be executed.
     ......................
    
    

    请注意,可以提供except子句或finally子句,但不能同时使用。不能同时使用else子句与finally子句。
    例子:

    #!/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块中的所有语句都执行,该异常被再次抛出,并在被处理 except 语句如果出现在一个更高的层在try-except语句。
    Exception参数:

    异常可以有一个参数,参数是一个值,它给出了关于这个问题的其他信息。参数按异常内容改变。可以通过不同的子句提供一个变量,如下所示捕获异常的参数:

    try:
     You do your operations here;
     ......................
    except ExceptionType, Argument:
     You can print value of Argument here...
    
    

    如果正在编写代码来处理一个异常,可以有一个变量按照异常的名称在不同的声明。如果捕捉多个异常,可以有一个变量按照异常的元组。

    这个变量将接收主要包含异常原因的异常值。该变量可以在一个元组的形式接收一个或多个值。该元组通常包含错误串,错误码和一个错误的位置。
    示例:

    下面是一个异常的例子:

    #!/usr/bin/python
    
    # Define a function here.
    def temp_convert(var):
     try:
     return int(var)
     except ValueError, Argument:
     print "The argument does not contain numbers\n", Argument
    
    # Call above function here.
    temp_convert("xyz");
    
    

    这将产生以下结果:

    The argument does not contain numbers
    invalid literal for int() with base 10: 'xyz'
    
    

    抛出异常:

    可以通过使用raise语句抛出几个方面的异常。一般raise语句的语法。
    语法

    raise [Exception [, args [, traceback]]]
    
    

    这里,Exception是异常的类型(例如,NameError)和参数是用于异常的参数值。该参数是可选的;如果未提供,则异常的参数是None。

    最后一个参数traceback,也是可选的(并且在实践中很少使用),并且如果存在的话,那么用于异常回溯对象。
    例子:

    异常可以是一个字符串,一个类或一个对象。大多数Python核心抛出是类,有参数认为是类的实例的异常。定义新的异常是很容易的,可以参考如下:

    def functionName( level ):
     if level < 1:
     raise "Invalid level!", level
     # The code below to this would not be executed
     # if we raise the exception
    
    

    注:为了捕获一个异常,“except”语句必须引用抛出类对象或简单的字符串相同的异常。例如,捕捉到上面的异常,必须写except子句,如下所示:

    try:
     Business Logic here...
    except "Invalid level!":
     Exception handling here...
    else:
     Rest of the code here...
    
    

    用户定义的异常:

    Python中,还可以通过内置的异常标准的派生类来创建自己的异常。

    下面是有关RuntimeError一个例子。这里是从RuntimeError子类的类被创建。当需要显示更多的具体信息时,一个异常被捕获,这是很有用的。

    在try块中,用户定义的异常引发,并夹在except块。变量e被用来创建类Networkerror的一个实例。

    class Networkerror(RuntimeError):
     def __init__(self, arg):
     self.args = arg
    
    

    所以一旦在上面定义的类,可以按如下方法抛出异常:

    try:
     raise Networkerror("Bad hostname")
    except Networkerror,e:
     print e.args
    
    

    文档

    详解在Python中处理异常的教程

    详解在Python中处理异常的教程:什么是异常? 异常是一个事件,其中一个程序,破坏程序的指令的正常流的执行过程中而发生的。一般情况下,当一个Python脚本遇到一些情况不能处理,就抛出一个异常。异常是一个Python对象,它表示一个错误。 当Python脚本抛出一个异常,它必须处理异常,否则将
    推荐度:
    标签: 教程 异常 python
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top