トラブルが発生したので、以前書いたコードを眺めていたら、こんなメソッドを見つけた。
TryCatchFinallyメソッド
というらしい。
private void TryCatchFinally(Action tryProc, Action<Exception> catchProc, Action finallyProc) {
try { tryProc(); }
catch(Exception ex) { catchProc(ex); }
finally { finallyProc(); }
}
private void TryCatchFinally(Action tryProc, Action finallyProc) {
try { tryProc(); }
finally { finallyProc(); }
}
こうやって使うらしい。
private void HogeHoge() {
this.TryCatchFinally(
() => {
//todo: 処理の実装
},
ex => MessageBoxes.Error(ex.Message),
() => {
//todo: Finally 処理
}
);
}
んで、例外をキャッチしたくない時は、キャッチの引数をコメントアウトする
private void HogeHoge() {
this.TryCatchFinally(
() => {
//todo: 処理の実装
},
// ex => MessageBoxes.Error(ex.Message), コメントアウトする
() => {
//todo: Finally 処理
}
);
}
全部の例外をキャッチしなくない時は
private void TryCatchFinally(Action tryProc, Action<Exception> catchProc, Action finallyProc) {
try { tryProc(); }
// catch(Exception ex) { catchProc(ex); } コメントアウトする
finally { finallyProc(); }
}
なんてトリッキーなw
ふと思ったんだけど、Exception 型が生きないので、ジェネリック使った方がいい気がする・・・
private void TryCatchFinally<T>(Action tryProc, Action<Exception> catchProc, Action finallyProc) where T : Exception {