我有一段看起来像这样的代码:
try
{
// Do stuff
operationInfo.success = true;
}
catch
{
operationInfo.success = false;
throw;
}
finally
{
try
{
UploadToServer(operationInfo);
}
catch
{
// Suppress, it's ok if we can't upload to the server
}
}
我的问题是,在这种情况下,如果在主try块中抛出异常,堆栈跟踪会发生什么,然后finally块实际上会抛出(并处理)UploadToServer方法中的另一个异常?您是否获得了引发的 last 异常的堆栈跟踪,或者它是否会正确冒泡?
我正在寻找一个解释,说明IL如何管理在幕后发生的事情,而不是简单的“是或否”答案。
THX。