我有几种方法可以引发我的自定义异常。在引发异常之后,我需要处理它,让我们说日志消息到控制台并保存到数据库中。在引发的异常中执行自定义代码
我正在考虑在帖子标题中描述的一个疯狂的解决方法 - 我可以将自定义代码与日志记录和DB保存到__init__
我的自定义异常的方法,所以每次引发异常,我只是沉默它,因为所有需要的东西都会在异常初始化时完成。
我所知道的是,除了__init__
本身也提出了另一个例外,但可以过处理:)
有没有人试过?
为什么它是疯狂的想法? :)
-
编辑:
我知道这有点疯狂,我只是好奇你的意见的。我将尝试附上我想要实现的内容:
我正在使用远程数据,并且在通过网络与其他服务器通信时,可能会出现一些问题,每个人都在其他某个地方: 1.网络错误 - 启用创建连接。 2. HTTP错误(404,500等) - 连接后; 3.远程服务器可以返回一些其他错误太
由于这些问题发生在几个不同的地方,我创建了自定义异常:
class CustomException(Exception):
pass
到处提高了,我什么时候才能赶上他们,例如:
try:
conn.open(url)
except HTTPException as e:
raise CustomException('http')
这只是一个伪示例。
这CustomException被逮住somewher更高,几乎在每一个地方,我处理这个同样的方式,即:
try:
place.populate()
except CustomException as e:
handle_exception(e)
return False
而且handle_exception
保存有关问题的数据库信息,做其他的事情也想节省place
的对象状态和acccess日期,但始终更新相同的东西。
所以我只是想知道如果把handle_exception
代码放在__init__
之内会是一个非常疯狂的想法,因为每当出现异常时都会这样做。
感谢您的意见!
你有没有一个例子。你失去了我...... – RickyA
你可以在自定义异常的__init__内部进行日志记录和DB保存。但我不认为这是我们应该这样做的方式。通常在一个大项目中写这样的代码会让你自己和其他工作的人无法读取代码。 –
你为什么要将异常处理打包到异常对象中?如果你想触发一些日志记录,只需触发一些日志记录而不会出现异常。例外情况应该用于“特殊”情况。如果你不把它看作是一个例外,那么没有理由让它成为例外。 –