# 查看报错原因,报错的行,以及执行的代码# 通过错误回溯可以直接看到这些内容# 从哪里开始报错就找到自己写的那行
例
for i inin:print(i)
File "C:/Users/Administrator/PycharmProjects/untitled2/zwm1/10.py", line 7# 在第七行代码报错for i inin:^
SyntaxError: invalid syntax # 报错原因语法错误:无效语法
try:# 这里是预测可能会出现的错误print(a)# 在知道具体类型时except NameError as e:# 处理逻辑print(e)
name 'a'isnot defined(未定义名称“ a”)# 打印结果
进阶异常处理
else:# 没有异常时执行print()finally:# 不管是否有异常都会被执行print()
例
try:
a =1print(a)except Exception as e:print(e)else:print(f'没有出现异常,我被执行叻')finally:print(f'不管是否会出现异常,我都会被执行')
打印结果:
1
没有出现异常,我被执行叻
不管是否会出现异常,我都会被执行
主动抛出异常–raise
whileTrue:try:
num =input('请输入数值:')ifnot num.isdigit():raise ValueError('num必须是int类型')# 这里的raise是主动抛出异常else:print('是int类型时,循环终止')break# 终止循环except ValueError as i:print(i)whileTrue:try:
num =input('请输入数值:')if num.isdigit():# 条件判断,当num是int类型时print(f'{num}是int类型,循环终止')# 当满足上诉条件时执行语句break# 终止循环else:raise ValueError(f'{num}不是int类型,请继续输入')# f当不满足上诉条件时执行语句except ValueError as i:print(i)
自定义异常
defusers():
username =input('请输入你的用户名:')iflen(username)>=6:print('用户名符合规范')else:raise Exception('用户名不符合规范')whileTrue:try:
users()except Exception as i:# 捕捉异常print(e)
断言----assert
# 断言 assert 条件, '抛出自定义异常'# 满足条件会返回True# 不满足返回Flase,报错---AssertionErrortry:
value =int(input('请输入数值:'))assert value >10,f'{value}不大于10, 不满足条件'except Exception as i:print(i)