如何检查是否出现警告但仍未将其变为异常

时间:2017-09-11 20:06:19

标签: python

我有一个方法@JsonTypeName("user") @JsonTypeInfo(include= JsonTypeInfo.As.WRAPPER_OBJECT,use= JsonTypeInfo.Id.NAME) public class User { ... } 可以提升get_font。我想检查是否引发了警告,如果是这样的话,我想运行一段代码。

我目前的解决方案是

DefaultFontWarning

这会将def set_font(self): with warnings.catch_warnings(): warnings.filterwarnings("error") try: self.font = get_font(self.path, self.size) except DefaultFontWarning: self.is_default = True 附加到is_default,但它也会使警告静音,以便用户无法看到它。

如何检查警告是否已引发但仍未将其变为异常并输出?

1 个答案:

答案 0 :(得分:1)

提升Warning(或其他类型;例如UserWarning),但保留原始追溯。

def set_font(self):
    with warnings.catch_warnings():
        try:
            self.font = get_font(self.path, self.size)
        except DefaultFontWarning as e:
            raise Warning(*e.args).with_traceback(e.__traceback__) from None

使用from None将有效摆脱During handling ...消息。您可以通过替换'bad font'

来使用自己的消息,例如*e.args
raise Warning('bad font').with_traceback(e.__traceback__) from None