python:异常

程序运行时遇到错误就会停止运行,并提示错误信息即为异常

程序停止运行并提示错误信息即为抛出异常

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

一、捕获异常

01 异常捕获语法

程序开发中,如果对某段代码的执行结果不确定是否正确 ,可以通过try:来捕获异常,以下except语句可实现捕获所有异常

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

程序执行时,可能遇到不同类型的异常,并且需要针对不同类型的异常做出不同的响应,此时,需要捕获异常的类型

try:
    # 尝试执行的代码
except 错误类型1:
    # 对错误类型1执行相应代码
except 错误类型2:
    # 对错误类型2执行相应代码
except Exception as va:
    # 未知类型错误,并打印其错误类型
    print('错误类型为:%s' % va)
    

捕获未知错误

要通过except 错误类型i:的语句来实现识别所有错误类型,其代码量会很大,这时可以通过以上最后一行代码来实现

异常捕获完整语法

try:
    num = int(input('请输入一个整数:'))         # 用户的输入值不一定是整数
    a = 10/num                                  # 用户的输入值可能是0

except ValueError:                             # 识别特定的异常类型,若except后不跟异常类型,则捕获所有异常
    print('请输入正确的整数,整数,整数')

except Exception as r:                         # 将异常类型码直接输出
    print('异常是%s' % r)

else:
    print('如果没有异常,则执行else,有异常不执行')  # 效果同for...else...

finally:
    print('不管是否有异常,finally都执行')

print('捕获异常结束')

else:语句---只有 在没有异常时才会执行的代码

finally:语句---无论是否有异常,都会执行的代码

如果异常没有被捕获,则该语句与没有写try...except...else..finally...一样,按一般语句执行,该报错的对方照常报错。

02 异常的传递

当函数/方法执行出现异常,那么它的异常会传递给调用它的函数/方法

这样的话,在开发中,可以在主函数中增加异常捕获,只要出现异常都会传递到主函数中的异常捕获中

二、 主动抛出异常

应用程序特有的业务需求主动抛出异常

抛出后要捕获,捕获一般在抛出的上一级

python中提供有一个异常类Exception,若需要主动抛出异常,可以通过Exception类创建一个异常对象,并使用关键字raise抛出异常对象

def demo():
    pwd = input('请输入一个字符串:')

    if len(pwd) >= 8:
        return pwd

    ex = Exception('字符串长度太小', '呵呵')

    raise ex


try:
    print(demo())

except Exception as result:
    print('异常内容:%s' % result)

你可能感兴趣的:(python:异常)