Python 如何将警告作为异常传递到函数之外,但不中断程序
我有一个实现模型和视图的程序 我希望模型进行一些处理,如果出现问题,则向视图返回警告 现在,我希望将警告作为一种异常传递,因此如果我有一个GUI作为视图,我可以轻松创建一个消息框或类似的东西来显示警告,但不会中断程序流 我有什么办法可以做到这一点吗 注意:我知道Python中的Python 如何将警告作为异常传递到函数之外,但不中断程序,python,python-3.x,Python,Python 3.x,我有一个实现模型和视图的程序 我希望模型进行一些处理,如果出现问题,则向视图返回警告 现在,我希望将警告作为一种异常传递,因此如果我有一个GUI作为视图,我可以轻松创建一个消息框或类似的东西来显示警告,但不会中断程序流 我有什么办法可以做到这一点吗 注意:我知道Python中的警告模块,但我不知道是否可以将这些警告作为不中断程序流的异常传递 相关代码: 类模型(): 定义初始化(自): 尝试: 打开(某些文件)作为文件: self.file=file.readlines() 除FileNotFo
警告
模块,但我不知道是否可以将这些警告作为不中断程序流的异常传递
相关代码:
类模型():
定义初始化(自):
尝试:
打开(某些文件)作为文件:
self.file=file.readlines()
除FileNotFoundError外:
#我不希望模型在这里打印消息
#打印(“警告:找不到文件,继续默认设置”)
#我想向视图传递一个警告
self.file='某些数据'
raise FileNotFoundError(错误消息)
class视图():
定义初始化(自):
尝试:
self.model=model()
除FileNotFoundError外:
#我想在这里捕捉警告并显示它
#但如果我在这里发现一个异常,Python会抱怨
#self.model在稍后使用时未正确初始化
谢谢异常用于委托错误处理,而不是与呼叫方通信。不要重新引发异常,而是向对象添加另一个属性,指示
文件
属性中的数据是否为硬编码
比如说,
class Model():
def __init__(self):
self.hard_coded = False
try:
with open(some_file) as file:
self.file = file.readlines()
except FileNotFoundError:
self.source = True
self.file = 'some piece of data'
class View():
def __init__(self):
self.model = Model()
if self.hard_coded:
print("Warning: File not found, continuing with defaults")
或者,您可以使用
error\u msg
属性,该属性的值为None
或字符串,以便在视图不是None
时对其进行打印。听起来,您需要的是日志记录
以及在视图中显示日志的方法。