2012-05-16 2 views
2

Можно ли использовать инструкцию throw за пределами инструкции try{} catch{}? В моем коде (программирование плагинов в CRM 2011) я просто хочу показать пользовательское сообщение пользователю. Если бросок не работает, то как я могу это сделать?Заявка на выброс за вычетом выписки

любое предложение?

+0

Да вы можете.Например 'if (value == null) throw new NullValueException();' – Reniuz

+0

Вы должны отправить сообщение об ошибке, которую вы получаете. Я обычно забираю себя (хотя и ненадолго), не помещая ключевое слово «новое» перед исключением (не знаю, почему, я знаю, что это совершенно глупо). Кроме того, я уверен, что парсер позволит бросить везде, где разрешено утверждение , – Sprague

+1

Почему вы не попробовали, если это возможно или нет? – comecme

ответ

2

Да,

throw new Exception("your message"); 

или

throw new Exception(objectExtendedFromExceptionClass); 
5

Общаться сообщение обратно пользователю в виде плагина вы можете просто выбросить исключение

throw new Exception("Your message here!"); 

не должен быть в блоке try/catch - infact, если бы это было так, сообщение было бы подавлено, и пользователь не увидит его.

1

Можно ли использовать инструкцию throw вне инструкции try {} catch() {}?

Абсолютно. Исключение будет распространять стек до ближайшего соответствующего блока catch. Конечно, вам придется иметь блок catch где-то, делая правильную вещь ... но это не должно быть в том же методе или даже в том же классе.

Независимо от того, является ли исключение самым подходящим решением, это, разумеется, другое дело - это зависит от контекста.

1

из MSDN: Throwing Exception

Исключения содержат свойство с именем StackTrace. Эта строка содержит имя методов в текущем стеке вызовов вместе с именем файла и номером строки, где исключение было выбрано для каждого метода .

Да, вы можете исключить исключение. как это

throw new Exception("Your Error here!"); 
4

Да, как утверждают другие ответы, вы можете выбросить исключение и предотвратить любые дальнейшие действия в своем плагине. Однако, поскольку вы специально ссылаетесь на программирование с плагинами Dynamics CRM, я рекомендовал вам только бросить InvalidPluginExecutionException, чтобы отражать пользовательские сообщения для ваших пользователей в соответствии с MSDN guidelines.

При желании вы можете отобразить сообщение об ошибке в диалоговом окне в веб-приложения, когда Ваш плагин сгенерирует исключение InvalidPluginExecutionException с настраиваемого сообщения как Значение свойства Message. Рекомендуется, чтобы плагины только передавали InvalidPluginExecutionException обратно на платформу.

Поэтому, если вы столкнулись с логической ошибки в вашем плагине (., Например Title поле пустым) вы можете:

throw new InvalidPluginExecutionException("Title must not be blank"); 
+0

Хорошая точка. Я всегда задавался вопросом, почему это - любая идея? Нет заметной разницы, которую я обнаружил при использовании InvalidPluginExecutionException по сравнению с любым другим производным классом Exception. – glosrob

Смежные вопросы