当前位置: 首页 > 编程语言 > C#

在c#中记录异常分享

时间:2023-04-11 01:39:09 C#

在c#记录异常中记录异常,这是在文本文件中记录异常的代码。在这里,我只会得到错误的解释。但是它没有告诉我异常发生在哪一行。任何人告诉我如何实现这一点,以便我得到偶然发生的行号。try{}catch(Exceptionex){Console.WriteLine(ex.Message);}#regionWriteLogError//////在文件中写入错误日志//////publicvoidWriteLogError(stringerrorMessage){try{stringpath="~/Error/"+DateTime.Today.ToString("dd-mm-yy")+".txt";如果(!File.Exists(System.Web.HttpContext.Current.Server.MapPath(path))){File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close();}使用(StreamWriterw=File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path))){w.WriteLine("rnLogEntry:");w.WriteLine("{0}",DateTime.Now.ToString(CultureInfo.InvariantCulture));stringerr="错误信息:"+System.Web.HttpContext.Current.Request.Url.ToString()+"。错误信息:"+errorMessage;w.WriteLine(错误);w.WriteLine("________________________________");w.Flush();w.关闭();}}catch(Exceptionex){WriteLogError(ex.Message);}}#endregion我发现在C#中记录异常的最简单方法是调用ToString()方法:try{}catch(Exceptionex){Console.WriteLine(ex.ToString());这通常会为您提供所需的所有信息,例如错误消息和堆栈跟踪,以及任何其他特定于异常的上下文信息(但请注意,如果您使用调试信息程序编译您的应用程序,堆栈跟踪将仅显示源代码文件和行号)然而,值得注意的是,看到完整的堆栈跟踪对用户来说可能是相当不合适的,所以只要有可能,您应该尝试处理异常并打印出更友好的错误消息。另一方面-您应该用功能齐全的日志记录框架(例如Log4Net)替换WriteLogError方法,而不是尝试编写自己的方法。您的日志记录方法不是线程安全的(您的日志文件最终可能会将日志消息相互混合)并且如果您捕获异常绝对不应该调用自身-这意味着在记录错误时发生的任何异常都可能导致硬-诊断StackOverflow异常。我可以建议如何解决这些问题,但使用适当的日志记录框架会好得多。只需记录ToString()。它不仅会给你堆栈跟踪,还会给你内部异常。此外,例如,在将代码的发布版本部署到生产环境时,不要忘记在发布包中包含.pdb文件。获取exception代码的行号需要这个文件(详见Howmuchinformationdoesapdbfilecontain?(C#/.NET))以上是C#学习教程:记录c#中exception分享的全部内容,如果你有没有用过,需要详细了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: