我有一个相当大的.NET解决方案,它的异常处理能力很差。原始作者意味着,捕获特定类型的异常而不是基本异常类,但是,这导致了我可以计算的类型被抛出但不会被捕获的地方,并使软件不可靠。如何执行代码分析以确定解决方案中可以抛出异常类型但未被捕获的位置?
答案 0 :(得分:2)
您可以添加一个全局异常处理程序来记录Exception,包括堆栈跟踪,并为用户提供一个很好的错误对话框。您可以使用堆栈跟踪来识别代码中产生错误的位置,并更好地处理这些方案。尽可能记录。
你如何做到这一点取决于平台(WebForms,MVC,WinForms,WPF,......?)
此外,对整个代码库进行深入的代码审查并强调错误处理可能会在将错误表现为用户错误之前捕获许多错误。
答案 1 :(得分:1)
这就是我处理它们的方式。在Program.cs
方法的Main
中,我设置了事件处理功能。之后,您将这些事件放入您想要的代码中。
Application.ThreadException += Form1_UIThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
编辑:这适用于非基于网络的应用。
答案 2 :(得分:0)
未捕获的任何异常都未处理。好消息是您可以订阅该AppDomain.CurrentDomain.UnhandledException事件。
它处理任何未捕获的异常。
如何执行代码分析以确定解决方案中的位置 可以抛出异常类型但是没有被捕获?
像StyleCop这样的程序会突出显示可能的未处理异常。
答案 3 :(得分:0)
除了答案中提到的内容,您还可以使用Pex等工具。它允许您自动创建一个测试套件,涵盖代码的许多极端情况