当前位置:  开发笔记 > 编程语言 > 正文

如何使用.NET 2.0捕获使用块中的异常?

如何解决《如何使用.NET2.0捕获使用块中的异常?》经验,为你挑选了1个好方法。

我正在尝试越来越多地利用using块这些天我有一个实现IDisposable的对象,但我还没想到的一件事是如何捕获异常,就像在普通的try/catch/finally中一样...任何代码样本指向正确的方向?

编辑:在阅读完回复后,问题被修改了.它是"如何在.NET 2.0的使用块中抛出异常?" 但我实际上是在寻找一种方法来捕获使用块内的这些异常.


我正在寻找有关在使用块中滚动我自己的捕获块的更多细节.

编辑:我想避免的是必须在我的使用块中使用try/catch/finally,如@Blair所示.但也许这不是问题......

编辑:@Blair,这正是我想要的,感谢您的详细回复!



1> Blair Conrad..:

我真的不明白这个问题 - 你像往常一样抛出异常.如果是MyThingimplements IDisposable,那么:

using ( MyThing thing = new MyThing() )
{
    ...
    throw new ApplicationException("oops");
}

thing.Dispose当你离开块将被调用,因为异常的抛出.如果你想组合一个try/catch/finally和一个using,你可以嵌套它们:

try
{
    ...
    using ( MyThing thing = new MyThing() )
    {
        ...
    }
    ...
}
catch ( Exception e )
{
    ....
}
finally
{
    ....
}    

(或者将try/catch/finally放在使用中):

using ( MyThing thing = new MyThing() )
{
    ...
    try
    {
        ...
    }
    catch ( Exception e )
    {
        ....
    }
    finally
    {
        ....
    }    
    ...
} // thing.Dispose is called now

或者您可以在@Quarrelsome演示中展开using并显式调用块,在(或)中添加您需要的任何额外的异常处理或恢复代码.Disposefinallyfinallycatch

编辑:为了回应@Toran Billups,如果你需要处理异常,除了确保你的Dispose方法被调用,你要么必须使用using和/ try/catch/finally或展开using- 我不认为有任何其他方法来实现你的想.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有