异常处理
例一:
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