异常

异常的概念

。程序在运行时,如果Python解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,就是异常

。程序停止执行并且提示错误信息这个动作,我们通常称之为:抛出(raise)异常

 

程序开发时,很难将所有的特殊情况都处理的面面俱到,通过异常捕获可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性

 

捕获异常

在程序开发中,如果对某些代码的执行不能确定是否正确,可以增加try(尝试)来捕获异常

语法:

try:
    尝试执行的代码
except:
    出现错误的处理

。try尝试,下方编写要尝试代码,不确定是否能够正常执行的代码

。except如果不是,下方编写尝试失败的代码

 

错误类型捕获

在程序执行时,可能遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的响应,这个时候,就需要捕获错误类型了

语法如下:

try:
    # 尝试执行的代码
except 错误类型1:
    # 针对错误1,对应的处理
except 错误类型2:
    #针对错误2,对应的处理
except Exception as result:
    print("位置错误 %s" % result)

。当Python解释器抛出异常时,最后一行错误信息的第一个单词就是错误类型

 

异常捕获完整语法

语法如下:

try:
    #尝试执行的代码
except 错误类型1:
    # 针对错误类型1,对应的代码处理
except 错误类型2:
    # 针对错误类型2,对应的代码处理
except (错误类型3,错误类型4)
    # 针对错误类型3,4,对应的代码处理
except Exception as result:
    # 打印错误类型
else# 没有异常才会执行的代码
finally# 无论是否有异常,都会执行的代码

else只有在没有异常时才会执行的代码

finally无论是否有一场,都会执行的代码

 

异常的传递

。异常的传递——当函数/方法执行出现异常,会将异常传递给函数/方法的调用一方

。如果传递到主程序,仍然没有异常处理,程序才会被终止

提示:

。在开发中,可以在主函数中增加异常捕获

。而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的异常捕获中

。这样就不需要再代码中,增加大量的异常捕获,能够保证代码的整洁

示例:

def demo1():
    return int(input("请输入整数:"))


def demo2():
    return demo1()

# 利用异常的传递性,在主程序捕获异常
try:
    print(demo2())
except Exception as result:
    print("未知错误 %s" %result)

 

抛出raise异常

。在开发中,处理代码执行错误Python解释器会抛出异常之外,还可根据业务需求主动抛出异常

示例:

def input_password():
    # 1.提示用书输入密码
    pwd = input("输入密码:")

    # 2.判断密码长度 >=8,返回用户输入的密码
    if len(pwd) >= 8:
        return pwd

    # 3.如果<8主动抛出异常

    # 创建异常对象
    ex = Exception("长度不够")

    # 主动抛出异常
    raise ex

try:
    print(input_password())
except Exception as result:
    print(result)

 

posted on 2018-03-28 17:14  今日的小白白  阅读(153)  评论(0编辑  收藏  举报

导航