
在软件开发中,经常需要对用户输入进行验证,以确保其符合程序的业务逻辑或数据约束。当输入值超出预设的有效范围时,抛出并捕获自定义异常是一种清晰且专业的错误处理机制。本教程将展示如何设计一个python程序,接收一系列整数输入,检查它们是否在特定范围内(例如,不小于3且不大于30),并将每个数字及其立方存储到字典中。对于超出范围的数字,我们将使用自定义异常进行标记,并确保所有输入都被处理,最终打印出完整的处理结果。
为了区分不同类型的范围错误,我们定义两个继承自Exception的自定义异常类:NumberTooSmall和NumberTooBig。这些异常类可以携带额外的信息,例如导致异常的具体数值。
class NumberTooSmall(Exception):
"""当数字小于3时抛出的自定义异常"""
def __init__(self, num):
self.num = num
super().__init__(f"数字 {num} 小于3")
class NumberTooBig(Exception):
"""当数字大于30时抛出的自定义异常"""
def __init__(self, num):
self.num = num
super().__init__(f"数字 {num} 大于30")在__init__方法中,我们存储了引发异常的数字,并调用了父类的构造函数,以便异常消息能够更具描述性。
程序的关键在于如何迭代处理每个输入,并在每个输入上独立地执行范围检查和异常处理。将try-except块放置在循环内部是实现这一目标的关键。
这种处理方式确保了即使某个输入引发了异常,程序也能继续处理后续的输入,并且每个数字的处理结果(无论是正常值还是异常标记)都能被准确地记录下来。
立即学习“Python免费学习笔记(深入)”;
下面是结合了上述所有概念的完整Python代码:
# 假设输入为:3, 7, 9, 22, 34
# 为了演示方便,这里直接赋值,实际应用中可通过 input() 获取
# n1, n2, n3, n4, n5 = int(input()), int(input()), int(input()), int(input()), int(input())
# 示例输入:1, 5, 10, 30, 50
All = sorted([1, 5, 10, 30, 50]) # 示例数据,可替换为用户输入
# 定义自定义异常类
class NumberTooSmall(Exception):
"""当数字小于3时抛出的自定义异常"""
def __init__(self, num):
self.num = num
super().__init__(f"数字 {num} 小于3")
class NumberTooBig(Exception):
"""当数字大于30时抛出的自定义异常"""
def __init__(self, num):
self.num = num
super().__init__(f"数字 {num} 大于30")
dic = {} # 初始化结果字典
# 遍历所有输入数字,并在循环内部处理异常
for i in All:
try:
if i < 3:
raise NumberTooSmall(i) # 抛出数字过小异常
elif i > 30:
raise NumberTooBig(i) # 抛出数字过大异常
else:
dic[i] = i**3 # 数字在范围内,计算立方并存储
except NumberTooSmall as e:
dic[i] = 'NumberTooSmall' # 捕获NumberTooSmall异常,记录到字典
# print(f"捕获到异常:{e}") # 可选:打印异常信息
except NumberTooBig as e:
dic[i] = 'NumberTooBig' # 捕获NumberTooBig异常,记录到字典
# print(f"捕获到异常:{e}") # 可选:打印异常信息
# 打印字典内容
print("最终处理结果字典:")
for key, value in dic.items():
print(f'{key} : {value}')
使用示例输入[1, 5, 10, 30, 50]运行上述代码,将得到以下输出:
最终处理结果字典: 1 : NumberTooSmall 5 : 125 10 : 1000 30 : 27000 50 : NumberTooBig
输出清晰地展示了每个输入数字的处理结果:
这种输出格式既保留了原始输入数字作为键,又通过值明确指示了该数字的处理状态,无论是正常处理还是因异常而标记。
通过掌握自定义异常和循环内异常处理的技巧,开发者可以构建出更加健壮、容错性更强的Python程序,有效应对各种用户输入和数据处理场景。
以上就是Python中自定义异常与循环内错误处理实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号