C#虚构函数中可以这么干么?
为了获取执行过程中的错误,写出如下代码:
public class TestError { private StringBuilder error; public string Error { get { return error.ToString(); } private set { Error = value; } } public TestError() { error = new StringBuilder(); } ~TestError() { Error = error.ToString(); } public void Fun1() { //干了很多事,其中会被return掉,每次return就会append一个error信息 error.AppendFormat("Error1,{0}.{1}", "null", Environment.NewLine); } public void Fun2() { //干了很多事,其中会被return掉,每次return就会append一个error信息 error.AppendFormat("Error2,{0}.{1}", "last error", Environment.NewLine); } }
//楼主以后可以这么干,把你想输出的错误记录下来,没必要那样干的using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.IO;using System.Globalization;/// <summary>///ErrorUtil 的摘要说明/// </summary>public class ErrorUtil{ public ErrorUtil() { // //TODO: 在此处添加构造函数逻辑 // } public static void WriteError(string errorMessage) { try { string path = "~/Error/" + DateTime.Today.ToString("yyyy-MM-dd") + ".txt"; if (!File.Exists(System.Web.HttpContext.Current.Server.MapPath(path))) { File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close(); } using (StreamWriter w = File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path))) { w.WriteLine("\r\n错误实例 : "); w.WriteLine("日期:{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture)); //string err = "Error in: " + System.Web.HttpContext.Current.Request.Url.ToString() +". Error Message:" + errorMessage; w.WriteLine(System.Web.HttpContext.Current.Request.Url.ToString()); w.WriteLine(errorMessage); w.WriteLine("_________________________________________________________________________________"); w.Flush(); w.Close(); } } catch (Exception ex) { WriteError(ex.Message); } }}还可以把这个方法放进这个文件Global.asax void Application_Error(object sender, EventArgs e) { //在出现未处理的错误时运行的代码 Exception objErr = Server.GetLastError().GetBaseException(); string err = "错误明细:" + objErr.Message.ToString(); ErrorUtil.WriteError(err); //Server.ClearError(); }//
[解决办法]
如果放进全局文件中,会把所有的错误都记录下来
如果不想记录所有的,就想在哪个方法中调用都可以了,那样有错误就可以记录
[解决办法]
get
{
return error.ToString();
}
你把
~TestError()
{
Error = error.ToString();
}
改为
error = "123"; 再看看
[解决办法]
我没测试这段代码,但是我怎么觉得会堆栈溢出?
[解决办法]