我在c#中这样做。这些是代码层
视图 - > VIEWHANDLER - > BusinessLayer - > WCF服务
视图调用ViewHandler,它调用调用服务的业务层。该服务将抛出一些故障异常。所有异常都在View处理程序中处理。业务层重新抛出从服务中获取的故障异常,以便在VIEWHANDLER中处理。在BusinessLayer中重新抛出它的最佳方法是什么?
catch(FaultException f)
{
throw f;
}
或
catch(FaultException f)
{
throw;
}
“throw f”会重置捕获的异常中保存的调用堆栈信息吗?并抛出按原样发送它吗?
答案 0 :(得分:6)
是的,throw f;
将重置堆栈。
throw;
不会。
在任何一种情况下,如果您只是在catch
块中执行此操作,那么最好不要使用try-catch
块,因为它毫无意义。
答案 1 :(得分:3)
是的,您应该使用throw
而不是throw f
。如果您未在catch
声明中执行任何操作,则可以省略catch
。