我有一个.NET 4.0控制台应用程序,它已在发布模式下编译并部署。应用程序执行成功的大部分时间,但有时,由于未处理的异常,它已崩溃。 Windows应用程序事件日志包含以下内容:
应用程序:App.exe 框架版本:v4.0.30319 描述:由于未处理的异常,进程终止。 异常信息:System.IO.FileLoadException Stack:App.Program.Main(System.String [])
我在MSDN上阅读了一篇文章,声明'AppDomain.CurrentDomain.UnhandledException'应该用于避免未处理的异常,但显然这没有用。请帮我确定原因,以及如何解决。代码如下:
class Program
{
private static ILog _logger;
static void Main(string[] args)
{
try
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
var configFile = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "log4net.config");
// Initialize Log4Net
XmlConfigurator.Configure(new FileInfo(configFile));
_logger = LogManager.GetLogger(typeof (LoggingHelper));
//App Logic starts here!
}
catch (Exception ex)
{
Log(ex);
}
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
var ex = (Exception) e.ExceptionObject;
Log(ex);
}
catch
{
}
}
public static void Log(Exception ex)
{
try
{
_logger?.Error(ex);
}
catch
{
}
}
}