何时使用以及何时不使用Try Catch Finally

use*_*521 12 c# asp.net try-catch-finally .net-3.5

我在.net 3.5中创建asp.net web应用程序,我想知道何时使用以及何时不使用Try Catch Finally块?特别是,我的大部分try catch都围绕执行存储过程并填充文本字段或网格视图?当您执行存储过程并填充数据显示控件时,您会使用Try Catch EVERYTIME吗?

我的代码块通常如下所示:

    protected void AddNewRecord()
    {
        try
        {
           //execute stored proc
           // populate grid view controls or textboxes
        }
        catch (Exception ex)
        {
           //display a messagebox to user that an error has occured
           //return
        }
        finally
        { }
   }
Run Code Online (Sandbox Code Playgroud)

Chr*_*isF 11

答案是"它取决于".

您可能希望try{...} catch {...}在每个原子操作周围使用,以便在出现问题时可以回滚到上一个良好状态(使用事务).这可能是一个或几个存储过程 - 这取决于您的应用程序.

如果要捕获异常,请确保明确指出捕获的异常.你不应该catch (Exception ex)或者catch()- 称为"catch all"异常处理 - 但是具有类似catch (IndexOutOfRangeException ex)(例如)的特定catch语句.

但是,如果您无法处理异常或者您无法清除任何内容,那么您就不应该捕获它.

  • @ user279521 - "原子" - 就像一个原子,因为它无法进一步分割.它可能有许多步骤,但如果按照自己的步骤执行,则每个步骤都没有意义.例如,如果您修复了代码中的错误但需要编辑许多类,则所有文件的签入都被认为是原子的,因为只检入一个没有任何意义. (3认同)