特定の状況下で、次のようなクラスのすべての例外を処理するにはどうすればよいですか?
class Test : IDisposable {
public Test() {
throw new Exception("Exception in ctor");
}
public void Dispose() {
throw new Exception("Exception in Dispose()");
}
~Test() {
this.Dispose();
}
}
私はこれを試しましたが、うまくいきません:
static void Main() {
Test t = null;
try {
t = new Test();
}
catch (Exception ex) {
Console.Error.WriteLine(ex.Message);
}
// t is still null
}
「using」も使用しようとしましたが、~Test(); からスローされた例外を処理しません。
static void Main() {
try {
using (Test t = new Test()) { }
}
catch (Exception ex) {
Console.Error.WriteLine(ex.Message);
}
}
どうすれば回避できますか?