Python ValidationError或TypeError、ValueError-异常
我对如何在python中捕获异常非常了解。关于捕获异常的这两种方法,我有一个问题。我只找到有关ValidationError的有用信息 但我不太明白,除了django之外,它是否还可以使用,或者我可以期望它会有什么错误消息。我看到了这个关于类型验证的代码示例Python ValidationError或TypeError、ValueError-异常,python,django,exception,error-handling,django-validation,Python,Django,Exception,Error Handling,Django Validation,我对如何在python中捕获异常非常了解。关于捕获异常的这两种方法,我有一个问题。我只找到有关ValidationError的有用信息 但我不太明白,除了django之外,它是否还可以使用,或者我可以期望它会有什么错误消息。我看到了这个关于类型验证的代码示例 except (TypeError, ValueError) as error: LOGGER.error('Error e.g.', exc_info=True) except ValidationError:
except (TypeError, ValueError) as error:
LOGGER.error('Error e.g.', exc_info=True)
except ValidationError:
LOGGER.error('Error e.g', exc_info=True)
因此,对于我来说,TypeError
和ValueError
很清楚:
异常值错误
当操作或函数接收到类型正确但值不正确的参数,并且该情况未由更精确的异常(如Indexer Ror)描述时引发
异常类型错误
当操作或函数应用于不适当类型的对象时引发。关联的值是一个字符串,提供有关类型不匹配的详细信息
总之,
我试图理解第二个代码使用ValidationError
的优点,但这可能很棘手,因为我没有找到关于它的好文档。如果有人能分享关于ValidationError的知识,我将不胜感激
我提出这个问题是因为我将使用相关的库,我没有看到异常被这样对待
谢谢社区它们是处理不同异常的不同代码块 但是在本例中,两种情况处理每个异常的逻辑相同 如果我们将案例分为3个不同的代码块,可能更有意义:
except TypeError as error:
LOGGER.error('Type error: ', exc_info=True);
except ValueError as error:
LOGGER.error('Value error: ', exc_info=True);
except ValidationError error:
LOGGER.error('Validation error: ', exc_info=True);
当使用不正确的类型时,将抛出TypeError
使用不正确的值时将抛出ValueError
验证失败时将抛出ValidationError
程序将以不同方式处理每个异常可以通过以下方式捕获Python异常:
试试看:
除:
或
像这样
试试看:
除(,):
<处理异常的代码>
您只是在一起处理多个异常。你可以
总是把他们分开。它们不是两种不同的方式。
在您的情况下,记录它的方式是一样的
以下是几个例子:
试试看:
除类型错误外:
<处理异常的代码>
除值错误外:
<处理异常的代码>
除ValidationError外:
<处理异常的代码>
除:
<处理异常的代码>
在最后一种情况下,它捕获任何类型的异常,因为没有指定任何类型。
Python程序中的可以引发任何异常。
事实上,exception只是一个特殊的类,即使您可以为库创建一个类。
因此,找到异常的最佳方法是阅读库中的文档
不是异常类
如果您的程序捕获到异常,并希望在创建日志文件时获得有关该异常的更多详细信息,则可以这样编写代码。
类型错误除外,如e:
i=str(e)
在这种情况下,您将捕获异常并将其详细信息转换为字符串。
这是Django文档中关于您正在谈论的错误的部分
表单验证发生在数据被清除时。如果你想
自定义此过程,有不同的地方可以进行更改,每个
服务于不同目的的人。有三种类型的清洁方法
在表单处理期间运行。这些通常在您调用时执行
表单上的“”是valid()方法。还有其他一些东西也可以
触发清理和验证(访问errors属性或
直接调用full_clean()),但通常不需要它们
一般来说,如果存在错误,任何清理方法都可能引发ValidationError
正在处理的数据出现问题,通过相关
提供给ValidationError构造函数的信息。请参阅下面的最佳内容
提高验证错误的实践。如果未引发ValidationError,
该方法应以Python格式返回已清理(规范化)的数据
反对
其他一些参考资料:
一些您可能不清楚的内容:TypeError
和ValueError
内置于Python中。但是库可以而且通常会定义自己的异常ValidationError
来自您正在使用的库。要搜索异常,您应该查看库中的文档,而不是异常,因为它本身没有异常docs@Anonymous是的,我提出这个问题是因为我了解了一个新的图书馆,叫做related,为了进行验证@may OK,您只需查看文件中的异常,然后找到语句Raise validation Error,但我猜并非所有验证过程都支持此ValidationError,因为我使用的是名为related的新库,这里没有列出此类型的异常,例如。