gpt4 book ai didi

python - 在 Django 中抛出自定义异常时异常值字段为空

转载 作者:太空宇宙 更新时间:2023-11-04 11:03:39 27 4
gpt4 key购买 nike

我的 django 项目中有自定义异常,如下所示:

class CustomFooError(Exception):

def __init__(self, msg="Something went wrong with Foo."):
self.msg = msg

def __str__(self):
return repr(self.msg)

在我的代码中的不同点,我会引发这样的异常:

raise CustomFooError("Things are going badly")

当 Django 捕获这些错误时,在 Debug模式下,我得到 Django 的标准漂亮堆栈跟踪页面。但我从来没有看到我的错误消息——“事情很糟糕”从来没有出现在调试错误页面中。

它们似乎应该在错误页面上显示为 Exception Value。我回头浏览了 django 源代码,发现这是来自 sys.exc_info()value 字段,它一直被简洁地记录为“[异常的] 关联value 或 raise 的第二个参数,如果异常类型是类对象,则它始终是类实例。”不幸的是,我不知道如何处理这些信息。

所以我的问题是:我应该如何编写和引发我的自定义异常以获得更多有用的数据以显示在 django 错误屏幕等地方?

最佳答案

我只会使用 super 并让 Exception 的构造函数处理分配 msg 属性:

class CustomFooError(Exception):

def __init__(self, msg=None):
if msg is None:
msg = 'Something went wrong with Foo.'
super(CustomFooError, self).__init__(msg)

我刚刚在 Django 环境中对此进行了测试,它正确显示了我传递给异常构造函数的消息,或者如果没有传递则显示默认消息。

关于python - 在 Django 中抛出自定义异常时异常值字段为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3286204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com