Python中如何用try-catch处理输入验证?附代码求优化建议
代码优化建议与说明
先说说你代码里的几个关键问题:
- 结构错误:
try和except缩进不对,except要和try同级;另外IllegalArgumentError类和validate_input函数定义在调用之后,运行时会报错,得把它们放在代码最前面。 - 冗余逻辑:
validate_input验证通过后你手动raise IllegalArgumentError,这完全没必要——验证通过就不会抛异常,这行代码永远执行不到。 - 验证语句繁琐:判断非空的条件写得太啰嗦,Python里空字符串、
None在布尔语境下都是False,可以简化。
下面是优化后的代码:
# 先定义自定义异常类,必须在调用前 class IllegalArgumentError(ValueError): pass def validate_input(date, value, region): # 简化非空判断:只要任意参数为空/None就抛异常 if not (date and value and region): raise IllegalArgumentError("Invalid lambda event parameters") # 验证通过无需返回True,不抛异常就代表验证成功 # 若业务需要返回值也可保留,但验证函数通常只负责异常抛出 # 调用验证并捕获异常 try: # 假设date、value、region已提前定义 validate_input(date, value, region) print("输入验证通过") except IllegalArgumentError as error: print("输入出现错误:", error)
额外优化方向:
如果需要更精准的错误提示,可以拆分参数检查,抛出对应信息的异常:
def validate_input(date, value, region): if not date: raise IllegalArgumentError("日期参数不能为空") if not value: raise IllegalArgumentError("数值参数不能为空") if not region: raise IllegalArgumentError("区域参数不能为空")
内容的提问来源于stack exchange,提问作者reactnative
相关产品推荐
相关产品推荐

