C# 如何在不使用try-catch的情况下使用Using语句捕获并记录异常?

C# 如何在不使用try-catch的情况下使用Using语句捕获并记录异常?,c#,.net,exception-handling,try-catch,using,C#,.net,Exception Handling,Try Catch,Using,据我所知,Using语句已经内置了Dispose和Try-Catch的实现。所以我想知道一些事情 是否可以使用语句在内部记录异常,而不使用 在语句内部或外部使用try-catch块。如果 不,那么为什么它内置于语句中 嵌套或过度使用try-catch是不可取的,那么为什么这样的模型呢 首选使用 using (some_resource) { try { } catch

据我所知,Using语句已经内置了Dispose和Try-Catch的实现。所以我想知道一些事情

是否可以使用语句在内部记录异常,而不使用 在语句内部或外部使用try-catch块。如果 不,那么为什么它内置于语句中

嵌套或过度使用try-catch是不可取的,那么为什么这样的模型呢 首选使用

        using (some_resource)
        {
            try
            {
            }
            catch
            {
            }
            finally
            {
                //my exception logging mechanism
            }
        }
将成为

            try
            {
                try
                {
                }
                catch
                {
                }
                finally
                {
                    //my exception logging mechanism
                }
            }
            catch
            {
            }
            finally
            {
                //some_resource.Dispose()
            }
using语句涉及try/finally;没有陷阱。但坦率地说,你的担心太过分了;不希望使用多重嵌套和复杂的try/catch/finally,因为:

这使得代码很难阅读 更难的是,大多数人都错了,唉 它经常被误用 这表明你的方法做得太多了 使用时,这不是问题;它使意图非常清晰,没有增加复杂性或顾虑

我只想使用:

using (some_resource) {
    try {
        // some code
    } catch (Exception ex) {
        LogIt(ex);
        throw;
    }
}
using语句涉及try/finally;没有陷阱。但坦率地说,你的担心太过分了;不希望使用多重嵌套和复杂的try/catch/finally,因为:

这使得代码很难阅读 更难的是,大多数人都错了,唉 它经常被误用 这表明你的方法做得太多了 使用时,这不是问题;它使意图非常清晰,没有增加复杂性或顾虑

我只想使用:

using (some_resource) {
    try {
        // some code
    } catch (Exception ex) {
        LogIt(ex);
        throw;
    }
}

使用编译器尝试{}最后{}。见以下问题:

这样做的原因是,无论是否引发异常,都将释放资源。资源处置是using语句的目的

正确的实施方式是:

using(Resource myresource = GetResource())
{
    try
    {}
    catch(Exception e)
    { //Maybe log the exception here when it happens?
    }
}

使用编译器尝试{}最后{}。见以下问题:

这样做的原因是,无论是否引发异常,都将释放资源。资源处置是using语句的目的

正确的实施方式是:

using(Resource myresource = GetResource())
{
    try
    {}
    catch(Exception e)
    { //Maybe log the exception here when it happens?
    }
}

使用不转换为try-catch,仅try-finally。异常日志记录机制不应该在“catch”中,而不是在“finally”中吗?从何处获得您的首选项?使用不转换为try-catch,仅try-finally。异常日志记录机制不应该在“catch”中吗,不是“最终”?你从哪里得到你的偏好?