美文网首页生活不易 我用python
Python里的异常处理(上)

Python里的异常处理(上)

作者: 東飛 | 来源:发表于2017-04-15 00:58 被阅读67次

    异常意味着出现错误,并且会中断程序的正常控制流。

    • 使用 raise 语句可以引发异常

    raise语句的一般格式:

    raise Exception([value])
    Exception是异常类型,而value是说明异常相关细节的可选值
    例如:
    raise RuntimeError('Unrecoverable Error')
    
    • 使用 try...except...语句可以捕获异常

    例如:

     try:
        f=open('test')
     except IOError as e:
        print  '处理I/O错误'
    

        出现异常时,解释器将停止执行try代码块中的语句,并寻找可匹配该异常的except子句。如果找到,控制权就会传递给except子句中的第一条语句。执行完except子句后,控制权就会传递给出现try...except...代码块之后的第一条语句。否则,异常将传递给try语句所在的上一级代码块。

           except语句的可选修饰符as var提供了一个变量名称。如果出现异常,就会在其中放置一个提供给raise语句的异常类型的实例。

    注意事项:
    # 在以前的版本(Python 2.6)使用下面的except语句,不推荐使用
     except Exception , e:
        pass
    # 新的代码使用as var语法:
     except Exception as e:
        pass
    
    使用多条except子句指定多个异常处理代码块
    try:
        do something
    except IOError as e:
        # 处理I/O错误
    except TypeError as e:
        #处理类型错误
    except NameError as e:
        #处理名称错误
    
    或者
    
    try:
        do something
    except (IOError,TypeError,NameError) as e:
        # 处理I/O、类型或名称错误
    
    
    使用pass语句忽略异常,不做任何处理
    try:
        do something
    except IOError:
        pass   
    
    捕获除与程序退出相关异常之外的所有异常
    
    try:
        do something
    except Exception as e:
        error_log.write("An error occurred : %s\n" %e)
    
    使用except语句不带任何异常类型,将会捕获所有异常
    
    try:
        do something
    except :
        error_log.write("An error occurred \n")
    
    try...except...else 语句
    #如果try代码块中的代码没有引发异常,就会执行else子句中的所有代码
    try:
        f=open('test','r')
    except Exception, e:
        error_log.write("Unable to open test : %s\n" % e) 
    else:
        data=f.read()
        f.close()
    
    try...except...finally 语句
    
    finally子句不用与捕获,无论是否出现错误都会执行
    try:
        pass
    except IOError as e:
        raise e
    finally:
        pass
    

    相关文章

      网友评论

        本文标题:Python里的异常处理(上)

        本文链接:https://www.haomeiwen.com/subject/ywggattx.html