6

当 Tridion 2011 中存在某种情况时,我想停止发布。在 Razor 模板中,我尝试:

throw new Exception("Exceptional condition!");

但是,在模板生成器中它说“成功”。

有任何想法吗?

在 VBScript 模板中,我们会执行 Err.Raise,它会将错误扔回发布队列。

4

2 回答 2

9

基本 Razor Mediator 代码中绝对没有任何 try/catch 机制,模板中的错误应该会出现(正如您看到的常见的 null 引用错误,您可能会在剃刀时遇到很多错误!)。有些事情你一定要检查:

  1. 是否正在执行带有异常的代码路径?正如 Bart 建议的那样,您应该通过 Template Builder 运行它,看看那里是否有任何有用的日志。还可以输入您自己的调试语句来定位代码路径的去向。

  2. 您的异常是否在格式正确的剃刀语句中?

  3. 如果是新 CT,页面模板的代码是否允许渲染您的 CT?

我只是设置了一个示例 TBB,如下所示(并将 TBB 添加到组件模板中):

<div>Testing an Error</div>
@{ throw new Exception("Exceptional condition"); }

通过模板生成器运行在输出窗口中显示错误。使用 CT 预览带有组件的页面将失败并显示错误。发布页面显示“失败”状态,已处理项目详细信息显示“异常情况!” 信息。

希望对您有所帮助,如果您仍然遇到问题,请随时发布您的代码,我会进一步调试它!

于 2012-12-14T14:25:28.547 回答
8

在我看来,Razor Mediator 正在捕捉你的异常,而不是重新抛出它。但是快速浏览一下代码并没有直接告诉我会发生在哪里。

那里有很多 try, catch 块(有些可能是正确的和预期的),大多数是记录警告。

您在模板构建器日志中得到什么有趣的东西吗?如果不是,我会尝试加载 Razor Mediator 代码并在您运行模板时对其进行调试,以查看是什么捕获了您的异常以及是否可以轻松更改它(好在它是开源的)。

于 2012-12-14T11:56:59.413 回答