2010-04-30 161 views
0

我们在C++中有一个软件产品,由于编译器记录的问题会生成错误的代码(是的,我知道它本身很糟糕)。这其中的错误导致访问冲突被抛出。软件产品应该如何处理访问冲突

我们对此的回应是捕获错误并继续运行。

我的问题是,这是一个负责任的方法?它是否负责让应用程序在发生灾难时失败?它会更负责提醒用户和死亡?

编辑:
一个让异常未处理的论据是,访问冲突表明,从做伤害被阻止的程序,可能没有任何做过。我不确定我是否买了。对此有何看法?

+7

...我会通过寻找一个新的编译器来处理它们。我当然希望你没有为*哔哔声*支付*。 – 2010-04-30 09:20:55

+0

我们付出了,它是一片ble。。但由于图书馆知道VCL,我们被锁定了。移民需要数月。但我多么希望能够使用没有这些错误的编译器,并且实际上会花费更多的时间修复这些错误。自10月份以来,这个项目的报道已不幸地开放。 – daramarak 2010-04-30 09:45:53

+0

十月对于长期以来一直在市场上销售的产品来说并不是很长。只是退后一个版本。 – 2010-04-30 11:46:43

回答

3

我与伊格纳西奥:尽快获得该编译器的修复程序,或者如果这样的修复不是即将到来的跳槽。当然,这样做可能会有障碍,而且我猜你正在寻找实现该目标的短期解决方案。 :-)

如果故障代码问题不是非常狭窄约束到一个已知的,主要是无害的情况,那么我倾向于认为继续生产和出货的产品有故障码可以被视为不负责任,不管你如何处理违规行为。

如果这是一个非常狭窄约束,已知的情况下,你如何处理它取决于情况。你似乎知道故障是什么,所以你有能力知道你是否能够面对那个故障继续下去。我倾向于倾向报告和退出,但是,这又完全取决于故障的实际情况。

+0

它主要与抛出异常有关,当我们尝试失败控制时,编译器错误无法灾难地破坏不在堆栈上的对象。 让它无法处理的一个理由是,访问违规只意味着该软件不会受到伤害,并且可能会导致该问题。还没有做任何事。 – daramarak 2010-04-30 09:47:47

+0

T.J.还有一件事。你的解决方案是不会出货的,但这并不能真正回答我的问题。即使我们认为我们已经删除了这些错误,它是否有责任留下这样的例外? – daramarak 2010-04-30 10:05:09

+0

@daramarak:回答你最后一个问题:它会给我heebie-jeebies,但我不是那种面对现场情况和各种相互冲突的优先事项的人(并且相信我,我知道它可以做什么) 。祝你好运。 – 2010-04-30 12:14:00

2

真的不言而喻,但是像程序做它没有做的事情是不负责任的(当它应该在某个地方设置一些实际上是悬挂指针的值),或者没有做它不该做的事情时,没有(当它随机化一些变量的地方不幸成为悬挂指针的目的地)。

损害最小化/减灾战略可能是校验和文件(但不是一个简单的办法,实际上验证原封不动数据中的文件没有被修改),并经常自动保存。

您是否认为客户意识到这个问题?

+0

+1(“缓解策略”,或许。) – 2010-04-30 09:29:41