現在実行中のコードが catch ブロック内から呼び出されていることを検出するにはどうすればよいですか?
void SomeFunction()
{
// how do I detect whether I am being called from within a catch block?
}
編集:
質問者のために、私はこのようなクラスを実装したかったのですが、エラーのバブリング ロジックは気にしません。とにかくそれは私の考えをちょっと破壊します。
public class ErrorManager {
public void OnException(Exception ex) {
LogException(ex);
if (IsInsideCatchBlockAlready()) {
// don't destroy the stack trace,
// but do make sure the error gets bubbled up
// through the hierarchy of components
throw;
} else {
// throw the error to make it bubble up
// through the hierarchy of components
throw ex;
}
}
void LogException(Exception ex) {
// Log the exception
}
bool IsInsideCatchBlockAlready() {
// How do I implement this?
}
}