1.无措处理案例
2.主动触发异常案例
3.finally扫尾工作处理方案
4.自定义异常处理案例
5.常见异常案例
6.默认异常处理
源码
# 1. 无措处理方案
try:
age = int(input("请输入您的年龄:"))
except ValueError:
pass # 无操作处理
def input_password():
# 提示用户输入密码
pwd = input("请输入密码:")
# 如果密码长度>=8,返回用户输入的密码
if len(pwd) >= 8:
return pwd
# 如果 < 8 主动抛出异常
print("主动抛出异常")
# 1> 创建异常对象
ex = Exception("密码长度不够")
# 2> raise 主动抛出异常
raise ex
# 提示用户输入密码
try:
print(input_password())
except Exception as result:
print(result)
# 3.finally扫尾工作处理方案
try:
a = int(input("请输入 a 的值:"))
print(20 / a)
except:
print("发生异常!")
else:
print("执行 else 块中的代码")
finally:
print("执行 finally 块中的代码")
from OutOfAge import OutOfAge # 4.自定义异常处理案例
x = input('请输入一个数:')
y = input('请输入另一个数:')
try:
a = int(x)
if a < 18:
raise OutOfAge
b = int(y)
if b == 0:
raise ZeroDivisionError
c = a / b
except OutOfAge:
print('自定义异常处理类')
except ValueError:
print('检查输入字符串是否为可转换为整数。')
except ZeroDivisionError:
print('除以 0 错误。')
else:
print('没有错误。')
finally:
print('程序执行完毕。')
# 5. 常见异常处理
try:
num1 = int(input("请输入第一个数字: "))
num2 = int(input("请输入第二个数字: "))
result = num1 / num2
print("结果:", result)
except ValueError as ve:
print(f"数值输入错误: {ve}")
except ZeroDivisionError as zde:
print(f"除数不能为零: {zde}")
# 6. 默认异常处理方案
try:
file = open("不存在的文件.txt", "r")
except Exception as e:
print(f"默认异常处理: {e}")
输出结果
C:\Users\19553\.conda\envs\gametanke\python.exe C:\Users\19553\.conda\envs\douban\venv\module.py
请输入您的年龄:12
请输入密码:134532
主动抛出异常
密码长度不够
请输入 a 的值:3
6.666666666666667
执行 else 块中的代码
执行 finally 块中的代码
请输入你的年龄:12
你是未成年人。
请输入一个数:24
请输入另一个数:24
没有错误。
程序执行完毕。
请输入第一个数字: 5
请输入第二个数字: 7
结果: 0.7142857142857143
默认异常处理: [Errno 2] No such file or directory: '不存在的文件.txt'
进程已结束,退出代码为 0