3

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

有什么建议吗?

4

5 回答 5

6

要在插件中将消息传回给用户,您可以简单地抛出异常

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

不必在 try/catch 块中 - 事实上,如果是,则消息将被禁止并且用户不会看到它。

于 2012-05-16T10:56:00.887 回答
4

是的,正如其他答案所述,您可以抛出异常并阻止插件中的任何进一步操作。但是,由于您具体指的是使用 Dynamics CRM 插件进行编程,因此我建议您只根据MSDN 指南InvalidPluginExecutionException将自定义消息反映给您的用户。

您可以选择在 Web 应用程序的对话框中显示自定义错误消息,方法是让插件抛出 InvalidPluginExecutionException 异常,并将自定义消息作为 Message 属性值。建议插件仅将 InvalidPluginExecutionException 传递回平台。

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

throw new InvalidPluginExecutionException("Title must not be blank");
于 2012-05-16T16:09:54.343 回答
2

是的,

throw new Exception("your message");

或者

throw new Exception(objectExtendedFromExceptionClass);
于 2012-05-16T10:55:35.743 回答
1

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

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

当然,例外是否是最合适的解决方案是另一回事 - 这取决于上下文。

于 2012-05-16T10:56:02.950 回答
1

来自 MSDN:抛出异常

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

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

throw new Exception("Your Error here!");
于 2012-05-16T10:56:48.003 回答