在测试基于命令行的程序时,我从执行目录中删除了一个DLL。这当然导致在程序启动时触发Could not load file or assembly
异常,并将原始异常详细信息转储到命令行:
未处理的异常:System.IO.FileNotFoundException:无法加载 文件或程序集'MyDLL,Version = 1.2.3.14056,Culture = neutral,PublicKeyToken = 0a0932194e205074'或其依赖项之一。该系统找不到指定的文件。在 MyApp.Program.Program.Main(String [] args)
我不希望用户看到这些原始详细信息,但我无法看到如何/在何处捕获此异常以清理显示的消息。
那么捕捉这样的东西的最佳/可接受方式是什么?
答案 0 :(得分:2)
您可以注册到Unhandled Exception处理程序并对其进行处理:
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler((x, y) =>
{
var exception = y.ExceptionObject as Exception;
if (exception is System.IO.FileNotFoundException)
Console.WriteLine("Please make sure the DLL is in the same folder.");
});
确保在代码中对MyDLL
的任何引用之前执行此事件注册。 Program.cs
中的静态构造函数可能是一个不错的选择。