Что входит в Исключительное поле броска - PullRequest
2 голосов
/ 18 августа 2011

Может кто-нибудь сказать мне, как использовать поле «Исключение» в игре «Бросок»?

Мне нужны конкретные примеры.Я выбрасываю исключение, так как мне нужно захватить его в вызывающем коде, а затем запустить какой-нибудь код очистки.

Спасибо за любую помощь

Ричард

В ответ наЧак

Я попробовал следующее, и рабочий процесс отменяется, но выполнение не входит в ловушки.Есть идеи, почему?

public class AbortException : System.Exception
{
}

class manager
{
    ...

    try
    {
        workflowApp.Run();
    }
    catch (AbortException ea)
    {

    }
    catch (Exception ex)
    {

    }

    ...
}

со свойством Exception: New AbortException

Ответы [ 2 ]

3 голосов
/ 18 августа 2011

Вы все еще используете WorkflowApplication здесь, верно?

Так ли это выполняется в другом потоке, так что попытка / перехват C # вокруг Run () не поможет.Вам нужно добавить обработчик к событию OnUnhandledException, как я указал в другом вопросе.

WorkflowApplication wfApp = new WorkflowApplication(new YourWorkflow());
wfApp.OnUnhandledException = e => UnhandledExceptionAction.Abort;
wfApp.Run();
2 голосов
/ 18 августа 2011

Самый простой - создать класс, который расширяет исключение и передает любые значения, которые вы хотите, например:

public class MyError : Exception
{
   public MyError() : base(string.Empty) {}
   public MyError(Exception e) : base(e.Message) {}
   public int MyCustomValue { get; set; }
}

Затем, используя его, как, (передавая значение 5 в обработчик catch)

throw new MyError(){ MyCustomValue = 5 };

Тогда в вашем улове

try{}
catch(MyError ex)
{
    Console.Write(ex.MyCustomValue.ToString());
}
...