ExceptionHandler в .NET - PullRequest
       31

ExceptionHandler в .NET

0 голосов
/ 25 июня 2018

Доброго всем дня!

Я копирую метод с использованием Mono.Cecil, и столкнулся со следующей проблемой:

Моя функция копирования проста (например):

public static bool Ping()
{
   MessageBox.Show("Ping");
   try
   {
       MessageBox.Show("status");
   }
   catch (Exception exception)
   {
       MessageBox.Show("Exception ");
       return false;
   }
   return true;
}

Это работа, а не проблема. Но если я сделаю:

MessageBox.Show("Exception " + exception.Message);

У меня проблема: когда выполнение достигает вызова функции, оно генерирует «Необработанное исключение» и clr завершает работу. Я даже не вижу MessageBox.Show("Ping")!

Я копирую блоки try / catch так:

    foreach (ExceptionHandler exh in SourceMethod.Body.ExceptionHandlers)
    {
        var ex = new ExceptionHandler(exh.HandlerType)
        {
            TryStart = exh.TryStart,
            TryEnd = exh.TryEnd,
            HandlerStart = exh.TryEnd,
            HandlerEnd = exh.HandlerEnd,
            CatchType = Assembly.MainModule.Import(typeof(Exception)), 
            HandlerType = exh.HandlerType,
            FilterStart = exh.FilterStart
        };
        target.Body.ExceptionHandlers.Add(ex);
   }

И я думаю, что моя проблема здесь:

        CatchType = Assembly.MainModule.Import(typeof(Exception)), 

Но я не знаю, как это сделать правильно

Я попробовал:

CatchType = exh.CatchType 

Но, к сожалению,

Как решить эту ситуацию? Есть идеи?

...