Navision 6.0(CC)中Try-Catch的替代方法[会员呼叫失败]

时间:2013-01-09 09:40:50

标签: microsoft-dynamics navision dynamics-nav

尝试在Navision中打印文档时,我们收到错误: Error message provided

翻译: 此消息适用于C / AL程序员: 对成员ActivePrinter的调用失败。 Microsoft Word返回以下消息:打印机错误。

此行发生错误:

wrdApp.ActivePrinter := InteractLogEntry."Printer Name";

InteractLogEntry是一个列表,其中填充了本地系统上安装的每台打印机。

我的问题:如何处理此异常(Navision不支持通过try-catch处理异常)

我可以使用if-else语句来解决此问题吗?

2 个答案:

答案 0 :(得分:2)

经典客户端中最好的工作尝试/捕获更换是放置 将代码崩溃到单独的代码单元的OnRun部分。

然后,您可以从另一个对象(代码单元,表单,报表等)调用代码 使用if子句

IF NOT MyCrashyCodeunit.RUN THEN BEGIN
  // Errror handling here
END

答案 1 :(得分:0)

自Dynamics NAV 2016起,可以选择调用Codeunit并评估其返回值。

引入了

Try函数(请参见函数的属性),并且可以将其设置为任何函数。在调用该函数并评估其布尔返回值时,将抑制错误并因此返回false。

更多信息:https://docs.microsoft.com/en-us/dynamics-nav/handling-errors-by-using-try-functions

重要信息:

由于不会回退try函数对数据库所做的更改,因此不应在try函数中包括数据库写事务。默认情况下,Microsoft Dynamics导航服务器配置阻止您执行此操作。如果try函数包含数据库写事务,则会发生运行时错误。