我正在使用以下方法,该方法行之有效,并大大减少了代码量(但是我不确定是否有更好的方法或它可能带来的陷阱。无论何时调用:我都会问那些给人以减少的查询是礼貌的足以澄清他们的行为;)
try
{
CallTheCodeThatMightThrowException()
}
catch (Exception ex)
{
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace ();
Utils.ErrorHandler.Trap ( ref objUser, st, ex );
}
这是ErrorHandler代码:只是要弄清楚-:objUser-是对appusers进行建模的对象(出于日志目的,您可能会获取诸如域名,部门,地区等信息。ILog logger-是日志记录对象-例如一个执行日志记录活动StackTrace st-为您的应用提供调试信息的StackTrace对象
using System;
using log4net;
namespace GenApp.Utils
{
public class ErrorHandler
{
public static void Trap ( Bo.User objUser, ILog logger, System.Diagnostics.StackTrace st, Exception ex )
{
if (ex is NullReferenceException)
{
}
if (ex is System.InvalidOperationException)
{
}
if (ex is System.IndexOutOfRangeException)
{
}
if (ex is System.Data.SqlClient.SqlException)
{
}
if (ex is System.FormatException)
{
}
if (ex is Exception)
{
}
}
}
}