Python|重新引发最后一个异常并发出警告
问题 -重新引发异常,该异常已在except块中捕获。
代码 #1:单独使用 raise 语句。
def example():
try:
int('N/A')
except ValueError:
print("Didn't work")
raise
example()
输出 :
Didn't work
Traceback (most recent call last):
File "", line 1, in
File "", line 3, in example
ValueError: invalid literal for int() with base 10: 'N/A'
当不需要采取任何行动来响应异常(例如,记录、清理等)时,通常会出现此问题。一个非常常见的用途可能是在包罗万象的异常处理程序中。
代码 #2:捕获所有异常处理程序。
try:
...
except Exception as e:
# Process exception information in some way
...
# Propagate the exception
raise
问题 2 –让程序发出警告消息(例如,关于不推荐使用的功能或使用问题)。
代码 #3:使用warnings.warn()
函数
import warnings
def func(x, y, logfile = None, debug = False):
if logfile is not None:
warnings.warn('logfile argument deprecated',
DeprecationWarning)
warn()
的参数是带有警告类的警告消息,通常是以下之一:
UserWarning、DeprecationWarning、SyntaxWarning、RuntimeWarning、ResourceWarning 或 FutureWarning。
警告的处理取决于解释器的执行方式和其他配置。
使用-W all
选项运行Python时的输出。
bash % python3 -W all example.py
example.py:5: DeprecationWarning: logfile argument is deprecated
warnings.warn('logfile argument is deprecated', DeprecationWarning)
通常,警告只会在标准错误上产生输出消息。要将警告转换为异常,请使用-W error
选项。
bash % python3 -W error example.py
Traceback (most recent call last):
File "example.py", line 10, in
func(2, 3, logfile ='log.txt')
File "example.py", line 5, in func
warnings.warn('logfile argument is deprecated', DeprecationWarning)
DeprecationWarning: logfile argument is deprecated
bash %
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。