如何以及何时使用(或不使用)三种特定情况的例外

How and when to use (or not use) exceptions for the three specific cases ?

本文关键字:三种 情况 何时使      更新时间:2023-10-16

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

以下哪种情况应引发异常? 解释你的推理。

(1( 有人试图将包装箱的容量设置为负值。

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

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

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

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

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

(2( 和 (3( 不应使用例外,因为它们来自程序内部。而且,用户无能为力。因此,我们应该使用"assert"或"if"分支来处理程序本身的错误。

右?

任何帮助,不胜感激。

谢谢!

(1( 有人试图将包装箱的容量设置为负值。

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

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

这是一个特殊情况。

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

这不是一个特殊情况,没有找到匹配项是预期的结果。