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