在catch语句之外抛出语句

时间:2012-05-16 10:53:45

标签: c# c#-4.0 dynamics-crm-2011

是否可以在try{} catch{}语句之外使用throw语句?在我的代码(CRM 2011中的插件编程)中,我只想向用户显示自定义消息。如果throw不起作用,我该怎么办呢?

任何建议?

5 个答案:

答案 0 :(得分:5)

要在插件中将消息传回用户,您只需抛出异常

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

不必在try / catch块中 - 事实上,如果是,则消息将被抑制,用户将看不到它。

答案 1 :(得分:4)

是的,正如其他答案在此处所述,您可以抛出异常并阻止插件中的任何进一步操作。但是,由于您特别指的是使用Dynamics CRM插件进行编程,因此我建议您仅按InvalidPluginExecutionException投掷throw new InvalidPluginExecutionException("Title must not be blank"); 以向用户反映自定义消息。

  

您可以选择在对话框中显示自定义错误消息   通过让你的插件抛出一个Web应用程序   带有自定义消息的InvalidPluginExecutionException异常   Message属性值。建议插件只能通过   一个InvalidPluginExecutionException返回平台。

因此,如果您的插件遇到逻辑错误(例如,标题字段为空),您可以:

{{1}}

答案 2 :(得分:2)

是,

throw new Exception("your message");

throw new Exception(objectExtendedFromExceptionClass);

答案 3 :(得分:1)

  

是否可以在try {} catch(){}语句之外使用throw语句?

绝对。异常将向上传播到最近的匹配catch块。当然,你必须有一个catch块某处做正确的事情......但它不需要在同一个方法中,甚至不需要在同一个类中。

异常是否是最合适的解决方案当然是另一回事 - 它取决于具体情况。

答案 4 :(得分:1)

来自MSDN的

Throwing Exception

  

异常包含名为StackTrace的属性。这个字符串包含   当前调用堆栈上的方法的名称,以及   文件名和行号,为每个文件引发异常   方法

是的,你可以抛出异常。像这样

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