异常处理
例一:
try:
#可能出现异常代码
except:
#如果程序异常,则立刻进入这儿
[finally:
#不管是否捕获异常,finally语法快必须要执行!!!
#资源关闭,等各种非常重要的操作,必须放在finally中执行
]
例二:
try:
#******
finally:
#主要目的是为了利用finally的特性,将必须要执行的代码放在这里执行
例三:
自定义异常处理类:
如果不够我们使用时,我们可以自定义异常类
异常抛出:自己认为的抛出异常对象,就是希望调用者可以直接让捕获,从而传递错误信息
异常处理:
def division(x, y): #division除数res = 0try:res = x / ynum3 = 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 resif __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