我有几种方法可以引发我的自定义异常。引发异常后,我需要对其进行处理,例如将消息记录到控制台并将其保存到数据库中。
我正在考虑帖子标题中描述的一个疯狂的解决方法 - 我可以将带有日志记录和数据库保存的自定义代码移动到__init__
我的自定义异常的方法中,所以每次引发异常时,我都会让它保持沉默,因为所有需要的东西都是在异常初始化时完成。
我知道异常__init__
本身可以引发另一个异常,但这也可以处理:)
有人试过吗?
为什么这是疯狂的想法?:)
-
编辑:
我知道这有点疯狂,我只是好奇你的意见。我将尝试附上我想要实现的目标:
我正在处理远程数据,当通过网络与其他服务器通信时,可能会出现一些问题,每个问题都在其他地方: 1. 网络错误 - 在创建连接时。2、HTTP错误(404、500等)——连接后;3.远程服务器也可以返回一些其他错误
由于这些问题发生在几个不同的地方,我创建了我的自定义异常:
class CustomException(Exception):
pass
当我能抓住它们时,到处举起它,例如:
try:
conn.open(url)
except HTTPException as e:
raise CustomException('http')
这只是一个伪例子。
这个 CustomException 在更高的地方被捕获,几乎在每个地方我都以相同的方式处理,即:
try:
place.populate()
except CustomException as e:
handle_exception(e)
return False
并将handle_exception
有关问题的信息保存到数据库中,还进行其他操作,例如保存place
的对象状态和访问日期,但始终更新相同的内容。
所以我只是想知道将handle_exception
代码放入其中__init__
是否真的很疯狂,因为每次引发异常时都会这样做。
感谢您的意见!