在编译的程序集中禁用try / catch

时间:2014-03-24 17:55:50

标签: .net

我们正在使用来自第3方的外部API,并且从反编译代码中,所有功能都有try/catch,其中包含空catch语句。

有没有办法从外部API(在C#中)禁用try / catch?

2 个答案:

答案 0 :(得分:1)

如果许可允许 - 反编译DLL,修改异常处理代码,重新编译回dll并使用它。您可以使用此Opensource工具来反编译ilspy.net

如果没有,那么您还可以查看AppDomain.CurrentDomain.FirstChanceExceptionMSDN Reference Link这将为应用程序域中引发的每个异常引发一个事件。因此,只要抛出异常,就会引发FirstChanceException事件。

有关好例子的详细说明(就像我在这里发布的那样refer to this Post

示例:

static void Main(string[] args)
{
    AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
    {
        Console.WriteLine("First chance exception: " + eventArgs.Exception.Message);
    };

    try
    {
        Console.WriteLine("Before exception.");
        throw new Exception("Some error.");
    }
    catch
    {
        Console.WriteLine("Handled.");
    }
}

答案 1 :(得分:0)

除了反编译代码,删除所有空的try/catch块,并重新编译代码,nope。