您的位置:首页 > 编程语言 > C#

C#错误信息后抛之日志

2016-08-07 11:42 239 查看
简介

    之前遇到问题就是try...catch抓异常抛异常。刚用.net进行开发的时候遇到的一个问题是明明问题给用户提示出来了,可是为什么代码还是会继续往下走呢?当时发现用try...catch就可以完美解决这个问题,还挺兴奋的,后来发现用return也可以解决这个问题。不过后来还是一直用try...catch去解决这种问题。开发就会和数据打交道,和数据打交道就会用到数据库,在和数据库打交道的过程中遇到过不少问题,什么连接未打开呀,未将对象引用到对象实例啊等等的一些问题。有些时候出现一些问题抛给用户后用户是看不懂的,就用了try...catch自已为聪明的告诉用户,网络错误,请联系管理员等一系列滑稽的提示。问题多了,用户联系开发者给解决问题,开发者自己都会忘记当时写这个提示是出了什么问题。日志后抛恰到好处的解决了问题。可以让开发者看到错误是什么原因,在哪里出现的此问题。

代码实现

<span style="font-size:18px;">     /// <summary>
/// 将异常打印到LOG文件
/// </summary>
/// <param name="ex">异常</param>
/// <param name="LogAddress">日志文件地址</param>
public static void WriteLog(Exception ex, string LogAddress = "")
{
//如果日志文件为空,则默认在Debug目录下新建 YYYY-mm-dd_Log.log文件
if (LogAddress == "")
{
LogAddress = Environment.CurrentDirectory + '\\' +
DateTime.Now.Year + '-' +
DateTime.Now.Month + '-' +
DateTime.Now.Day + "_Log.log";
}

//把异常信息输出到文件
StreamWriter fs = new StreamWriter(LogAddress, true);
fs.WriteLine("当前时间:" + DateTime.Now.ToString());
fs.WriteLine("异常信息:" + ex.Message);
fs.WriteLine("异常对象:" + ex.Source);
fs.WriteLine("调用堆栈:\n" + ex.StackTrace.Trim());
fs.WriteLine("触发方法:" + ex.TargetSite);
fs.WriteLine();
fs.Close();
}</span>
     我把上述代码写到了一个单独的类中,调用方式如下:

try
{
//代码段
}
catch (Exception a)
{
string address = "";
ErrorLog.WriteLog(a,address); //ErrorLog是类名

}
总结

     用户帮我们发现系统中的不足,让我们不断的成长,给用户一个体验度好的系统是我们一直在做的,日志后抛给用户合理的提示,帮助我们及时的解决系统的不足。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐