要捕捉两种不同类型的警告,可以使用warnings
模块中的filterwarnings
函数来设置要捕捉的警告类型,然后使用try-except
块来捕获警告并处理它们。
以下是一个示例,演示如何捕捉DeprecationWarning
和UserWarning
两种不同类型的警告:
import warnings
def foo():
warnings.warn("This is a deprecated function.", DeprecationWarning)
def bar():
warnings.warn("This is a user warning.", UserWarning)
# 设置要捕捉的警告类型
warnings.filterwarnings("error", category=DeprecationWarning)
warnings.filterwarnings("error", category=UserWarning)
try:
foo()
except DeprecationWarning as e:
print("Caught DeprecationWarning:", str(e))
try:
bar()
except UserWarning as e:
print("Caught UserWarning:", str(e))
在上面的示例中,warnings.filterwarnings
函数用于设置要捕捉的警告类型。我们首先设置捕捉DeprecationWarning
类型的警告,然后设置捕捉UserWarning
类型的警告。
然后,在try-except
块中,我们尝试调用foo
函数和bar
函数,它们都会引发警告。如果发生警告,将会抛出相应的异常,我们可以使用except
块捕获并处理它们。
当DeprecationWarning
被引发时,它会被except DeprecationWarning
捕获,并打印相应的消息。同样,当UserWarning
被引发时,它会被except UserWarning
捕获,并打印相应的消息。
注意:在实际应用中,根据具体需求,您可能需要进一步处理警告,例如记录日志或采取其他操作。