尝试抓住问题

Posted

技术标签:

【中文标题】尝试抓住问题【英文标题】:try catch question 【发布时间】:2011-09-17 18:10:39 【问题描述】:

我在 C# 中这样做。这些是代码层

视图 -> VIEWHANDLER -> BusinessLayer -> WCF 服务

视图调用 ViewHandler 调用业务层调用服务。该服务将抛出一些故障异常。所有异常都在 View 处理程序中处理。业务层重新抛出它从服务中获得的错误异常,以便在 VIEWHANDLER 中处理。在 BusinessLayer 中重新抛出它的最佳方法是什么?

catch(FaultException f)

throw f;

catch(FaultException f)

throw;

“throw f”是否会重置捕获的异常中保存的调用堆栈信息? throw 会按原样发送吗?

【问题讨论】:

是的,是的。如果您执行throw f,那么当异常最终被捕获并处理时,它将附加错误的堆栈跟踪。 【参考方案1】:

是的,throw f; 将重置堆栈。

throw; 不会。

在任何一种情况下,如果这就是您在 catch 块中所做的全部,那么您最好不要使用 try-catch 块,因为它毫无意义。

【讨论】:

【参考方案2】:

是的,您应该使用throw 而不是throw f。如果您在 catch 语句中不做任何事情,您可以省略 catch

【讨论】:

以上是关于尝试抓住问题的主要内容,如果未能解决你的问题,请参考以下文章

抓住新的 QApplication 失败并尝试其他方法

csharp Отловошибок尝试抓住

抓住我们有wifi连接的时刻

flyway 4.0 java基础回调afterValidate没有抓住钩子

文件扫描器:未报告的异常 FileNotFoundException;必须被抓住或宣布被抛出

抓住我在计算中得到 NaN 的那一刻