django 信号第一个 raise ValidationError出现后,还会继续下一个if吗

在你提供的代码片段中,如果第一个 raise ValidationError 触发,会抛出异常并停止执行当前函数或代码块。这是因为异常(Exception)会中断正常的代码流程,将控制权传递给调用堆栈中的第一个能够捕获该异常的地方。

所以,如果 v_lot_no 为空,第一个 raise ValidationError 被触发后,后续的 if not v_item_no 不会再被检查,因为异常会导致当前执行流程的跳转。

如果你想要检查多个条件并收集所有的错误,而不仅仅是第一个,你可以使用一个列表来保存错误信息,然后在适当的时候一次性抛出异常。例如:

errors = []

if not v_lot_no:
    errors.append('lot no不能为空')

if not v_item_no:
    errors.append('料号不能为空')

if errors:
    raise ValidationError(errors)

在这个例子中,我们将每个错误信息添加到 errors 列表中。如果 errors 不为空,我们最终抛出一个包含所有错误的 ValidationError 异常。这样,你可以收集多个错误而不是在第一个错误时立即停止。

posted @ 2023-11-18 10:13  侬侬发  阅读(34)  评论(0编辑  收藏  举报