在 catch 语句之外抛出语句

本文关键字:语句 catch | 更新日期: 2023-09-27 18:34:24

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

有什么建议吗?

在 catch 语句之外抛出语句

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

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

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

是的,正如其他答案在这里所说的那样,您可以抛出异常并阻止插件中的任何进一步操作。但是,由于您特别指的是使用 Dynamics CRM 插件进行编程,因此我建议您仅抛出InvalidPluginExecutionException,以便根据 MSDN 指南向用户反映自定义消息。

您可以选择在 Web 应用程序,方法是让您的插件抛出 无效插件执行异常异常,自定义消息为 消息属性值。建议插件仅通过 一个 InvalidPluginExecutionException 回到平台。

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

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

是的,

throw new Exception("your message");

throw new Exception(objectExtendedFromExceptionClass);
是否可以在try{}

catch(){}语句之外使用throw语句?

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

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

来自 MSDN:抛出异常

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

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

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