使用例外停止Tridion发布

时间:2012-12-14 10:16:19

标签: tridion

我想在Tridion 2011中存在特定条件时停止发布。在Razor模板中,我尝试:

throw new Exception("Exceptional condition!");

但是,在Template Builder中它表示“成功”。

有什么想法吗?

在VBScript模板中,我们会使用Err.Raise,它会将错误返回到Publish Queue。

2 个答案:

答案 0 :(得分:9)

在Razor Mediator基本代码中肯定没有任何try / catch机制,模板中的错误应该浮出水面(正如你所看到的那样,你可能会遇到常见的空引用错误,并且在编辑它时会遇到很多错误!)。你应该检查一些事情:

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

  2. 您的Exception是否采用格式正确的剃刀声明?

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

  4. 我只是按如下方式设置样本TBB(并将TBB添加到组件模板中):

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

    通过Template Builder运行在“输出”窗口中显示错误。 使用CT预览包含组件的页面将失败并显示错误。 发布页面显示“失败”状态,处理过的项目详细说明显示“异常情况!”消息。

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

答案 1 :(得分:8)

听起来像Razor Mediator正在捕捉你的异常,而不是重新抛出它。但是快速查看code并没有直接表明会发生什么。

有很多尝试,在那里捕获块(有些可能是正确的和预期的),大多数是记录警告。

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