学习记录错误。
这是贯穿我整个项目的代码的基本结构。

有人建议我只能将 try 块放置在事件处理程序中。
但是在记录错误时,需要知道是哪种方法导致了错误。
因此,在这种情况下,我是否也应该在 AllIsFine()SaveData() 中保留 try 块。
如果是,那么它应该记录错误还是只记录 throw

什么是最佳/标准做法。

DataContext objDataContext = new DataContext();
protected void btn_Click(object sender, EventArgs e)
{
  try
   {
     if(AllIsFine())
      {
        objDataContext.SaveData();
      }
   }
  catch(Exception ex)
   {
     //some handling
   }
}

private bool AllIsFine()
{
   //some code
}

编辑 :当然,我们会尝试看到它永远不会引发异常,但不实用。我是这样看的。部署后,我唯一的访问权限是访问日志并需要获取尽可能多的信息。所以在这种情况下,(以及这种结构),你建议在哪里保留 try catch

最佳答案



这不是真的。
有不同类型的异常,有些你需要处理,有些你应该抛出,有些你应该捕捉,有些你不应该。请阅读 this

概括:

  • 你应该捕捉异常,你可以用它们做一些事情
  • 如果您只想记录异常捕获、记录,然后使用 throw 而不是 throw ex(它会重置调用堆栈)
  • 如果可以的话,防止异常发生,检查防止异常的条件( IndexOutOfRangeException , NullPointerException , ArgumentNullException ) 这样做而不是执行操作并捕获异常

  • 关于c# - 我应该把 try catch 放在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27397620/

    10-16 05:13