美文网首页
P 面向对象 | 异常

P 面向对象 | 异常

作者: Ricsy | 来源:发表于2019-10-03 23:15 被阅读0次


一、异常

名称 描述
异常 程序在运行时,如果Python解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常
抛出异常 程序停止执行并提示错误信息这个动作,我们称之为抛出异常
错误类型 Python解释器抛出异常时,最后一行错误信息的第一个单词就是错误类型

提示:

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

1.1 异常捕获

开发中,对某些代码的执行不能确定是否正确,可以增加try来捕获异常

1.1.1 简单的异常捕获

try:
    不能确定正确的代码
except:
    错误处理代码

eg:

try:
    num = int(input("请输入一个整数:"))
except:
    print("请输入正确的整数")

print('-'*50)

1.1.2 错误类型捕获

try:
    # 尝试执行的代码
    pass
except '错误类型1':
    # 针对错误类型1,对应的代码处理
    pass
except ('错误类型2', '错误类型3'):
    # 针对错误类型2和错误类型3,对应的代码处理
    pass
except Exception as e:
    print("未知错误:%s" % e)

1.1.3 异常捕获的完整语法

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

try:
    # 尝试执行的代码
    pass
except Exception as e:
    # 打印错误信息
    print(e)
else:
    # 没有异常才执行的代码
    pass
finally:
    # 无论是否异常都会执行的代码
    pass

1.2 异常的传递性

当某个函数/方法执行出现异常,会将异常传递给函数/方法的调用一方,如果传递到主程序,仍然没有进行异常处理,程序才会被终止

  • 在开发中,在主函数中增加异常捕获
    主函数调用其他函数是,只要出现异常就会传递到主函数的异常捕获中,这样就不需要在代码中大量的写异常捕获,从而保证代码的整洁

1.3 抛出异常

1.3.1 主动抛出异常

应用场景:根据应用程序的特定业务需求主动抛出异常

def input_passwd():
    my_pwd = input("请输入密码:")
    if len(my_pwd) >= 8:
        return my_pwd
    else:
        # 创建异常对象(可以使用错误信息字符串作为参数)
        ex = Exception("密码长度不够")
        # 主动抛出异常
        raise ex


try:
    print(input_passwd())
except Exception as e:
    print(e)

class LenError(Exception):
    def __init__(self, error_info):
        super().__init__(self)
        self.error_info = error_info

    def __str__(self):
        return self.error_info


def input_passwd():
    my_pwd = input("请输入密码:")
    if len(my_pwd) >= 8:
        return my_pwd
    else:
        raise LenError("密码长度不够")


print(input_passwd())

class LenError(Exception):
    def __init__(self, error_info):
        super().__init__(self)
        self.error_info = error_info

    def __str__(self):
        return self.error_info


def input_passwd():
    my_pwd = input("请输入密码:")
    if len(my_pwd) >= 8:
        return my_pwd
    else:
        raise LenError("密码长度不够")


try:
    print(input_passwd())
except Exception as e:
    print(e)


更新中......


相关文章

网友评论

      本文标题:P 面向对象 | 异常

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