python--异常处理

时间:2024-04-13 20:16:46

异常处理

例一:

try:

                #可能出现异常代码

except:

                #如果程序异常,则立刻进入这儿

[finally:

                #不管是否捕获异常,finally语法快必须要执行!!!

                #资源关闭,等各种非常重要的操作,必须放在finally中执行

例二:

try:

                #******

finally:

                #主要目的是为了利用finally的特性,将必须要执行的代码放在这里执行

例三:

自定义异常处理类:

                如果不够我们使用时,我们可以自定义异常类

异常抛出:自己认为的抛出异常对象,就是希望调用者可以直接让捕获,从而传递错误信息

异常处理:

def division(x, y):     #division除数
    res = 0
    try:
        res = x / y
        num3 = int(input("请输入一个整数:"))
        print(num3 + x + y)
    except ZeroDivisionError as e:
        print(e)
        print("对不起,除数不能为0")
    except ValueError as e:
        print(e)
        num3 = int(input("请输入整数"))
        print(num3 + x + y)
    except Exception as e:
        print("其他异常")
    finally:
        print("finally语法块里的,必须要执行")
    return res


if __name__ == '__main__':
    num1 = int(input("请输入被除数"))
    num2 = int(input("请输入除数"))
    result = division(num1, num2)
    print(result)

    print("程序计算结束,继续向下运行")
请输入被除数8
请输入除数4
请输入一个整数:5
17
finally语法块里的,必须要执行
2.0
程序计算结束,继续向下运行

Process finished with exit code 0

异常抛出: 

class MyException(Exception):

    def __init__(self, msg):
        Exception.__init__(self,msg)

def login(username, password):
        if username != "admin":
            raise MyException("用户名不存在")
        if password != "123456":
            raise MyException("用户密码错误")


if __name__ == '__main__':
    try:
        login("admin", "1234")
    except MyException as e:
        print(e)
用户密码错误

Process finished with exit code 0