c# - Dts.TaskResult = (int)ScriptResults。Dts.Events.FireError() 之上的失败是好的?
问题描述
在脚本任务中:
else if (val == 0)
{
Dts.Events.FireError(0, "", "Custom Message ", "", 0);
Dts.TaskResult = (int)ScriptResults.Failure;
}
当我们有Dts.Events.FireError()
脚本任务时,当它被调用时,它会导致任务失败并显示自定义错误消息。所以很好写
Dts.TaskResult = (int)ScriptResults.Failure;
像上面的代码一样使任务失败。这不就像两次调用失败吗?任何用例我们都应该拥有这两者。
解决方案
我们应该同时使用
“这取决于。” 你想如何处理错误处理?
我的经验是,将 TaskResult 设置为 Failure 然后使用任务之外的优先约束来驱动控制流行为会更干净。也就是说,“是的,这个任务失败了,但是这个包还有工作要做。” 例如,我们预期的文件不存在 - 这就是错误,但我将采用错误路径来驱动下一步操作(发送有关丢失文件的电子邮件警报)
否则,您可以使用事件处理程序,这完全是一种有效的方法,但对于我咨询过的所有商店,也许有两家已经很好地使用了它们。由于容器嵌套和重新引发事件,许多人会因为事件被多次引发的可能性而感到困惑。
如果我知道我正在从任务中终止执行,那么 FireError 事件会很有帮助,因为它可以帮助我准确记录我中止处理的原因(未找到文件异常)。
推荐阅读
- sql - HiveSQL - Erorr mismatched input 'as' expecting
- vba - 在 VBA 中测试位
- python - 如何在 QLCDNumber 屏幕上显示多个数字?
- batch-file - FFMPEG 转换没有原始文件扩展名的文件输出
- filter - v-select 停用某些项目/选项
- eclipse - 如何在 Ecipe 的“声明”选项卡中找到给定的文本?
- eclipse - Eclipse 锁定执行,因此它不会被意外终止
- date - 在谷歌日历上设置动态日期
- reactjs - 带有 useSelector 的无限循环 useEffect
- bash - 我无法执行直到昨天才起作用的命令