在C#中使用try catch()的正确方法

时间:2012-08-03 05:44:58

标签: c# lambda try-catch

我正在使用ASP.NET/C#

以下是使用lambda expression更新数据库中某些信息的示例。

try
{
    using (var db = new DataClasses1DataContext())
    {
        var logSubGroup = db.sys_Log_Account_SubGroups
             .SingleOrDefault(subGroup => subGroup.cSubGroupName.Equals(subGroupName));
        logSubGroup.cRejectedBy = rejectedBy;
        logSubGroup.dRejectedOn = DateTime.Now;
        logSubGroup.cAuthorizedStatus = "Rejected";
        db.SubmitChanges();
    }
}
catch (Exception ex)
{
}

如您所见,我在catch() block内没有做任何事情。

我知道这是使用try catch的一种可怕方式。

任何人都可以帮助我以正确的方式使用try catch block

我对catch block内必须包含的内容毫无头绪。

欢迎任何建议。

4 个答案:

答案 0 :(得分:3)

根本不要使用try-catch块,除非您有特定原因来捕获特定异常

相反,使用一种全局异常处理方法(ASP.NET中的Application_Error)来全局捕获未处理的异常,显示错误消息并记录错误。

答案 1 :(得分:3)

作为一般规则,如果捕获异常的代码无法解决问题,则无需捕获异常,然后继续正确运行。在您所呈现的代码中,您是否可以确定可以在catch块中执行的某些操作,以将程序恢复到您信任它继续运行的状态?如果没有,那么只需让异常在堆栈中冒泡。

答案 2 :(得分:2)

理想情况下,您应该处理错误,以便应用程序可以从中恢复,但至少应该记录它。你永远不应该吞下它。此外,您不应该处理您不期望或无法处理的异常。例如,在打开文件时,可以预期并处理FileNotFoundException,例如通过显示警告并让用户选择另一个文件。

答案 3 :(得分:1)

从理论上讲,由你来决定你的catch语句中可能出现什么样的异常当然如果你正处于开发阶段这样做是不完全错误的我会非常不建议尝试catch因为你可能会错过一些可能发生的重要异常,你也希望修复一般你应该包括一个消息或一个动作,如果发现异常或错误,可以通知用户一条消息可以通知操作没有很好地执行但理想情况下你必须让用户知道出了什么问题,所以在这种情况下,更好的错误处理是一种方法