ValidationError 或 TypeError、ValueError - 异常

may*_*may 6 python django error-handling exception django-validation

我对如何在 python 中捕获异常是一个新手。我对这两种捕获异常的方法有疑问。我只找到了有关 ValidationError 的有用信息我只在这里

但我不太明白它是否可以在 django 之外使用,或者我可以期待什么错误消息。我看到了有关类型验证的代码示例。

except (TypeError, ValueError) as error:
            LOGGER.error('Error e.g.', exc_info=True)

except ValidationError:
            LOGGER.error('Error e.g', exc_info=True)
Run Code Online (Sandbox Code Playgroud)

所以对于TypeErrorValueError,很明显:

异常值错误

当操作或函数接收到具有正确类型但值不合适的参数时引发,并且这种情况未通过更精确的异常(例如 IndexError)来描述。

异常类型错误

当操作或函数应用于不适当类型的对象时引发。关联的值是一个字符串,提供有关类型不匹配的详细信息。

综上所述, 我试图了解第二个代码的优点是什么ValidationError,但这可能很棘手,因为我没有找到好的文档。如果有人可以分享有关 ValidationError 的知识,我将非常感激,

我提出这个问题是因为我将使用相关库并且我还没有看到异常被这样处理。

https://pypi.org/project/lated/

谢谢社区!

Ano*_*ous 6

Python异常可以这样捕获:

\n
try:\n<your code>\nexcept <Exception>:\n    <CODE 2>\n
Run Code Online (Sandbox Code Playgroud)\n

或者\n像这样

\n
try:\n    <your code>\nexcept(<exception1>,<exception2>):\n    <Code to handle exception>\n
Run Code Online (Sandbox Code Playgroud)\n
\n

您只是一起处理多个异常。您可以\n将它们分开。它们不是两种不同的方式。\n在你的情况下,就像记录它一样。

\n
\n

这里有一些例子:

\n
try:\n    <code>\nexcept TypeError:\n    <Code for handling exception>\nexcept ValueError:\n    <Code for handling exception>\nexcept ValidationError:\n    <Code for handling exception>\nexcept:\n    <Code for handling exception>\n
Run Code Online (Sandbox Code Playgroud)\n

在最后一种情况下,它捕获任何类型的异常,因为没有指定类型。
\n在Python 程序中可以引发任何异常。
\n事实上异常只是一个特殊的类,甚至你可以为你的库创建一个。

\n
\n

因此,查找异常的最佳方法是阅读库的文档而不是异常类。

\n
\n

如果您的程序捕获异常并需要有关它的更多详细信息以创建日志文件,则可以像这样编写代码。

\n
except TypeError as e:\n    i=str(e)\n
Run Code Online (Sandbox Code Playgroud)\n

在这种情况下,您将捕获异常并将其详细信息转换为字符串。
\n这是来自 Django 文档中关于您正在谈论的错误的信息。

\n
\n

当数据被清理时,表单验证就会发生。如果您想自定义此流程,可以在多个位置进行更改,每个位置都有不同的用途。在表单处理过程中\n运行三种类型的清理方法。这些通常在您调用表单上的 is_valid() 方法时执行。还有其他东西也可以触发清理和验证(访问错误属性或直接调用 full_clean()),但通常不需要它们。

\n

一般来说,如果正在处理的数据存在问题,任何清理方法都可能引发 ValidationError,并将相关信息传递给 ValidationError 构造函数。请参阅下面的\n引发 ValidationError 的最佳实践。如果没有引发 ValidationError,则该方法应将清理后的(标准化)数据作为 Python 对象返回。

\n
\n

一些进一步的参考:

\n

文档链接
\n此链接包含有关其他常见内置异常类的信息。

\n