【发布时间】:2009-08-03 11:23:52
【问题描述】:
我有一个包含许多方法的类,并希望为所有方法提供一个异常处理程序。 这些方法太多了,而且它们有不同的参数,如果为每个方法编写 try/catch 会很丑。
您是否知道一种方法,我可以通过在类异常处理程序中处理它们来做到这一点。
更新:
很多人问我为什么。原因是我正在使用各种方法调用数据源。 所以我的班级有函数getData1,gedData2,getData3,getData4,......,getDataN。问题是没有办法检查连接是否仍然打开并且创建新连接非常昂贵。所以我试图重用连接,如果下一次通话的连接失败,我会抓住这个并重新连接并重试。这就是为什么我需要这个 try/catch all 块。
为所有功能执行此操作:
try{
datasource.getData()
}
catch(ConnectionException)
{
datasource.Connect();
datasource.getData()
}
谢谢
【问题讨论】:
-
我知道这是一个老问题,但我想说的是,虽然我大多同意以下在提问当天提交的回复,但有时这种能力会非常有用. husayt 在上面描述了一个,我发现了这个问题,因为我有另一种情况。尽管杰克艾伦的回答不适用于我的场景,但我还是赞成它,因为它在其他情况下很有用,而且非常聪明,恕我直言。也就是说,在您使用 Jack 的“解决方案”之前,请确保没有其他方式来构建您的代码来完全避免这种需要。
-
没有这样的机制——也不应该有,恕我直言。它与控制流的传递方式不一致。你要做的是“丑陋”,这并不重要。您所做的解决方案并不重要,需要编写额外的代码。重要的是,当您(或其他人)忘记原始细节时,您能够编写易于理解并在以后维护的软件。如果一个方法在异常发生时需要做某事,那么方法中必须有一些东西,说明要做什么。这是一件好事。
-
顺便说一句,我赞成这个问题,因为我认为这是一个很好的问题。想要这样做是合法的,对其他人有用。了解为什么没有办法做到这一点,并了解应该做什么(在你的问题中你已经做过,即使你不喜欢结果),对其他人有用。
-
2017年也是这样吗?