【发布时间】:2012-12-14 10:16:18
【问题描述】:
当 Tridion 2011 中存在某种情况时,我想停止发布。在 Razor 模板中我尝试:
throw new Exception("Exceptional condition!");
但是,在模板生成器中它显示“成功”。
有什么想法吗?
在 VBScript 模板中,我们会执行 Err.Raise,它会将错误抛回发布队列。
【问题讨论】:
标签: tridion
当 Tridion 2011 中存在某种情况时,我想停止发布。在 Razor 模板中我尝试:
throw new Exception("Exceptional condition!");
但是,在模板生成器中它显示“成功”。
有什么想法吗?
在 VBScript 模板中,我们会执行 Err.Raise,它会将错误抛回发布队列。
【问题讨论】:
标签: tridion
在基本的 Razor Mediator 代码中绝对没有任何 try/catch 机制,模板中的错误应该会浮出水面(正如您看到的常见的空引用错误,您可能会在剃须它时遇到很多!)。有些事情你一定要检查:
异常的代码路径是否正在执行?正如 Bart 建议的那样,您应该通过 Template Builder 运行它,看看那里是否有任何有用的日志。也可以添加您自己的调试语句来定位代码路径的去向。
您的异常是否在格式正确的 razor 语句中?
如果是新 CT,页面模板的代码是否允许渲染您的 CT?
我只是设置了一个示例 TBB,如下所示(并将 TBB 添加到组件模板中):
<div>Testing an Error</div>
@{ throw new Exception("Exceptional condition"); }
通过模板生成器运行在输出窗口中显示错误。 使用 CT 预览带有组件的页面将失败并显示错误。 发布页面显示“失败”状态,已处理项目详细信息显示“异常情况!”消息。
希望对您有所帮助,如果您仍然遇到问题,请随时发布您的代码,我会进一步调试它!
【讨论】:
在我看来,Razor Mediator 正在捕获您的异常,而不是重新抛出它。但是快速浏览code 并没有直接告诉我会发生什么。
里面有很多 try, catch 块(有些可能是正确的和预期的),大多数是记录警告。
您在模板构建器日志中发现了什么有趣的东西吗?如果不是,我会尝试加载 Razor Mediator 代码并在您运行模板时对其进行调试,看看是什么捕获了您的异常,以及您是否可以轻松更改它(好在它是开源的)。
【讨论】: