using System;
namespace Dispose_Throw
{
public class Disposable : IDisposable
{
private int n;
public Disposable(int number)
{
n=number;
Console.WriteLine("CTOR, n="+n);
}
public void Dispose()
{
Console.WriteLine("Dispose, n="+n);
throw new System.InvalidOperationException("Exception, n=" + n);
}
}
class Program
{
static void Main(string[] args)
{
try
{
using
(
Disposable d1 = new Disposable(1),
d2 = new Disposable(2)
)
{
Console.WriteLine("Body");
}
}
catch (System.InvalidOperationException e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("End");
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIERpc3Bvc2VfVGhyb3cKewogICAgcHVibGljIGNsYXNzIERpc3Bvc2FibGUgOiBJRGlzcG9zYWJsZQogICAgewogICAgICAgIHByaXZhdGUgaW50IG47CiAgICAgICAgcHVibGljIERpc3Bvc2FibGUoaW50IG51bWJlcikKICAgICAgICB7CiAgICAgICAgICAgIG49bnVtYmVyOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiQ1RPUiwgbj0iK24pOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIHZvaWQgRGlzcG9zZSgpIAogICAgICAgIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkRpc3Bvc2UsIG49IituKTsKICAgICAgICAgICAgdGhyb3cgbmV3IFN5c3RlbS5JbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJFeGNlcHRpb24sIG49IiArIG4pOwogICAgICAgIH0KICAgIH0KICAgIGNsYXNzIFByb2dyYW0KICAgIHsKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICB0cnkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdXNpbmcKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICBEaXNwb3NhYmxlIGQxID0gbmV3IERpc3Bvc2FibGUoMSksCiAgICAgICAgICAgICAgICAgICAgZDIgPSBuZXcgRGlzcG9zYWJsZSgyKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJCb2R5Iik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2ggKFN5c3RlbS5JbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uIGUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKGUuTWVzc2FnZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkVuZCIpOwogICAgICAgIH0KICAgIH0KfQo=