You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:31:41