我想在Tridion 2011中存在特定条件时停止发布。在Razor模板中,我尝试:
throw new Exception("Exceptional condition!");
但是,在Template Builder中它表示“成功”。
有什么想法吗?
在VBScript模板中,我们会使用Err.Raise,它会将错误返回到Publish Queue。
答案 0 :(得分:9)
在Razor Mediator基本代码中肯定没有任何try / catch机制,模板中的错误应该浮出水面(正如你所看到的那样,你可能会遇到常见的空引用错误,并且在编辑它时会遇到很多错误!)。你应该检查一些事情:
是否执行了异常的代码路径?正如Bart建议的那样,您应该通过Template Builder运行它,看看那里是否有任何有用的日志。也可以输入自己的调试语句,找到代码路径的位置。
您的Exception是否采用格式正确的剃刀声明?
如果是新CT,页面模板的代码是否允许渲染CT?
我只是按如下方式设置样本TBB(并将TBB添加到组件模板中):
<div>Testing an Error</div>
@{ throw new Exception("Exceptional condition"); }
通过Template Builder运行在“输出”窗口中显示错误。 使用CT预览包含组件的页面将失败并显示错误。 发布页面显示“失败”状态,处理过的项目详细说明显示“异常情况!”消息。
希望有帮助,如果您仍然遇到问题,请随时发布您的代码,我会进一步调试它!
答案 1 :(得分:8)
听起来像Razor Mediator正在捕捉你的异常,而不是重新抛出它。但是快速查看code并没有直接表明会发生什么。
有很多尝试,在那里捕获块(有些可能是正确的和预期的),大多数是记录警告。
您是否在模板构建器日志中获得了任何有趣的内容?如果不是,我会尝试加载Razor Mediator代码并在运行模板时对其进行调试,以查看捕获异常的内容以及是否可以轻松更改(好东西是开源代码)。