1

这是一个面试问题,已经完成了。

以下哪种情况应该抛出异常?解释你的推理。

(1) 有人试图将 PackingBox 的容量设置为负值。

(2) 在对象用来设置其初始状态的配置文件中发现语法错误。

(3) 在字符串数组中搜索程序员指定的单词的方法找不到该单词的任何出现。

何时以及如何使用异常处理?

" 但是如果你从你自己的程序中得到一些无效的数据 - 不要抛出异常。如果你的问题来自你自己的错误代码,最好使用 ASSERT 来防范它。需要异常处理来识别问题程序无法处理并告诉他们有关用户的信息,因为用户可以处理它们。”

我认为:(1)应该使用异常,因为输入来自用户。错误不是从程序内部生成的。

(2) 和 (3) 不应使用异常,因为它们来自程序内部。而且,用户无能为力。所以,我们应该使用“assert”或“if”分支来处理程序本身的错误。

正确的 ?

任何帮助表示赞赏。

谢谢 !

4

1 回答 1

3

(1) 有人试图将 PackingBox 的容量设置为负值。

这是一个编程错误,它应该触发一个断言而不是异常。这只是代码中的一个错误。如果负值来自用户输入,则错误不会验证它。

(2) 在对象用来设置其初始状态的配置文件中发现语法错误。

这是一个特殊的情况。

(3) 在字符串数组中搜索程序员指定的单词的方法找不到该单词的任何出现。

这不是特殊情况,未找到匹配项是预期结果。

于 2012-05-18T01:08:02.233 回答