C# 重复的信息是有用的…我从中提取,让泛型异常冒泡到顶级异常处理程序(避免崩溃的根方法),然而,我并不认为为了日志目的而尝试/捕获每一个方法会有什么大问题……但这可能会变得单调乏味,因为它们都是相同的构造,并且有一点干涸……至少不要重新调用并拥有调用方法日志,

C# 重复的信息是有用的…我从中提取,让泛型异常冒泡到顶级异常处理程序(避免崩溃的根方法),然而,我并不认为为了日志目的而尝试/捕获每一个方法会有什么大问题……但这可能会变得单调乏味,因为它们都是相同的构造,并且有一点干涸……至少不要重新调用并拥有调用方法日志,,c#,C#,重复的信息是有用的…我从中提取,让泛型异常冒泡到顶级异常处理程序(避免崩溃的根方法),然而,我并不认为为了日志目的而尝试/捕获每一个方法会有什么大问题……但这可能会变得单调乏味,因为它们都是相同的构造,并且有一点干涸……至少不要重新调用并拥有调用方法日志,否则异常将用于管理目的。除了发送给用户的一般消息之外,我想要实现的就是让自己即时了解出了什么问题,为什么会发生异常。一旦系统运行,关键是它是全天候的。因此,我希望尽可能地对其进行更新,以使异常不断下降。考虑到我的目的,我是否应该使用并滥用链接文


重复的信息是有用的…我从中提取,让泛型异常冒泡到顶级异常处理程序(避免崩溃的根方法),然而,我并不认为为了日志目的而尝试/捕获每一个方法会有什么大问题……但这可能会变得单调乏味,因为它们都是相同的构造,并且有一点干涸……至少不要重新调用并拥有调用方法日志,否则异常将用于管理目的。除了发送给用户的一般消息之外,我想要实现的就是让自己即时了解出了什么问题,为什么会发生异常。一旦系统运行,关键是它是全天候的。因此,我希望尽可能地对其进行更新,以使异常不断下降。考虑到我的目的,我是否应该使用并滥用链接文章中的try/catch?:
…如果捕获到一般异常,请将其记录在某个位置。但是只记录一次-通常代码中充斥着记录异常的catch块…,重复的信息太多,没有用处…
我从中吸取了一些信息,让通用异常冒泡到顶级异常处理程序(根方法可以避免崩溃),然而,我并不认为为了日志目的而尝试/捕获每一个方法会有什么大问题……但是这可能会变得很乏味,因为它们都是相同的构造,并且有点干涸……至少不要重新调用,并且让调用方法log-alsoYes。我在考虑构建一个每次在“catch”中调用的异常方法。只是一种填桌子的方法,这样我每天都可以在办公室拿到。我在考虑构建一个每次在“catch”中调用的异常方法。这只是一种填桌子的方法,这样我每天都可以在办公室拿到。
namespace DAL
{
    public class Connection
    {
        public string GetNewConnection(string server)
        {
            return ConfigurationManager.ConnectionStrings[server].ConnectionString;
        }

        public DataSet ExecuteSQL(string sp)
        {
            DataSet ds = new DataSet();
            string connectionString = GetNewConnection("BO");
            SqlConnection conn = new SqlConnection(connectionString);
            SqlCommand command = new SqlCommand(sp, conn);
            command.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter(command);
            using (conn)
            {
                da.Fill(ds);
            }
            return ds;
        }
    }
    public class LineaDAL
    {
        Connection obj = new Connection();
        public DataSet GetLinea()
        {
            DataSet ds = new DataSet();
            string sp;
            sp = "sp1";
            ds = obj.ExecuteSQL(sp);
            return ds;
        }

        public bool UpdateLinea(string reclamo)
        {
            DataSet ds = new DataSet();
            string sp;
            sp = "sp2";
            ds = obj.ExecuteSQL(sp);
            return ExtensionMethods.IsEmpty(ds);
        }
    }

    public static class ExtensionMethods
    {
        public static bool IsEmpty(this DataSet ds)
        {
            return ds == null ||
              !(from DataTable t in ds.Tables where t.Rows.Count > 0 select t).Any();
        }
    }

}
try {
...
}
catch(Exception ex)
{
  ...
}
finally {

 .. cleanup...
}
try
{
...
}
catch(Exception ex)
{
    Log(ex.Message);
    MessageBox.Show("Error Occured. Please try again later."); //General message to the user 
}
finally
{
    Cleanup... like Disposing objects (like com objects) if they need to be disposed.
}