我有一些代码可以捕获异常,回滚事务然后重新抛出异常。
catch ( Exception exSys ) {
bqBusinessQuery.RollBackTransaction();
throw exSys ;
}
如果我使用此代码,VS Code 分析会引发警告说
改为使用不带参数的“抛出”,以保留最初引发异常的堆栈位置。
如果我使用代码
catch ( Exception exSys ) {
bqBusinessQuery.RollBackTransaction();
throw;
}
然后我收到警告说
变量“exSys”已声明但从未使用
我应该如何解决这个问题?
编辑 我试过这个方法,但它不起作用。system.exception 类需要额外的消息以及内部异常。如果我这样做,它将抛出一条新消息,覆盖来自原始异常的消息。我不想得到新的异常,我想用相同的消息抛出相同的异常。
catch (System.Exception ex)
{
throw new System.Exception(ex);
}
编辑
catch (System.Exception ex)
{
throw new System.Exception("Test",ex);
}
试过这个方法。然后手动使用throw new Exception("From inside");
. 现在,ex.Message 返回“Test”而不是“From inside”。我想保持“来自内部”的信息不变。这个建议的更改将导致到处出现错误显示代码的问题。:/