这是一个面试问题,已经完成了。
以下哪种情况应该引发异常?解释你的推理。
(1)有人试图将PackingBox的容量设置为负值。
(2)在对象用于设置其初始状态的配置文件中发现语法错误。
(3)在字符串数组中搜索程序员指定的单词的方法找不到该单词的任何出现。
这 When and how should I use exception handling?
“但是如果从你自己的程序中得到一些无效数据 - 不要抛出异常。如果你的问题来自你自己的错误代码,最好使用ASSERT来防范它。需要进行异常处理识别程序无法处理的问题并告诉他们有关用户的问题,因为用户可以处理它们。“
我认为: (1)应该使用异常,因为输入来自用户。该错误不是从程序内部生成的。
(2)和(3)不应该使用异常,因为它们来自程序内部。并且,用户无法帮助。因此,我们应该使用“assert”或“if”分支来处理程序本身的错误。
对吗?
感谢任何帮助。
谢谢!
答案 0 :(得分:3)
(1)有人试图将PackingBox的容量设置为负值。
这是一个编程错误,它应该触发一个断言但不是异常。这只是代码中的一个错误。如果负值来自用户输入,则错误不会验证它。
(2)在对象用于设置其初始状态的配置文件中发现语法错误。
这是一种特殊的情况。
(3)在字符串数组中搜索程序员指定的单词的方法找不到该单词的任何出现。
这不是特殊情况,没有找到匹配项是预期的结果。