如何以及何时使用(或不使用)三种特定情况的例外
How and when to use (or not use) exceptions for the three specific cases ?
这是一个面试问题,已经完成了。
以下哪种情况应引发异常? 解释你的推理。
(1( 有人试图将包装箱的容量设置为负值。
(2( 在对象用于设置其初始状态的配置文件中发现语法错误。
(3(在字符串数组中搜索程序员指定的单词的方法找不到该单词的任何出现项。
从何时以及如何使用异常处理?
"但是,如果您从自己的程序内部获得一些无效数据 - 请不要抛出异常。如果你的问题来自你自己的错误代码,最好使用 ASSERT 来防范它。需要异常处理来识别程序无法处理的问题并告诉它们有关用户的信息,因为用户可以处理它们。"
我认为:(1(应使用异常,因为输入来自用户。错误不是从程序内部生成的。
(2( 和 (3( 不应使用例外,因为它们来自程序内部。而且,用户无能为力。因此,我们应该使用"assert"或"if"分支来处理程序本身的错误。
右?
任何帮助,不胜感激。
谢谢!
(1( 有人试图将包装箱的容量设置为负值。
这是一个编程错误,它应该触发断言,但不是异常。这只是代码中的一个错误。如果负值来自用户输入,则错误未验证它。
(2( 在对象用于设置其初始状态的配置文件中发现语法错误。
这是一个特殊情况。
(3(在字符串数组中搜索程序员指定的单词的方法找不到该单词的任何出现项。
这不是一个特殊情况,没有找到匹配项是预期的结果。
相关文章:
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- C++:我的开关盒循环转到第一种情况
- 多维数组存储三种不同的数据类型?
- 如何使一个函数具有三种不同的输出条件?
- 两种情况下的输出不应该相同吗?
- 输出一个数字,该数字可能是三种类型之一
- 为什么'const'在这两种情况下的行为不同?
- 如何创建一个包含三种不同类型的向量的向量
- 在哪种情况下,C++会在编译时进行数组边界检查?
- free():仅在一种情况下指针无效
- 当一种方法有三种返回可能性时该怎么办?
- 程序在开关中执行第二种情况后崩溃
- 在两种情况下,铸造的工作方式不同
- 如果ConstexPR似乎仅在两种情况有效时起作用
- 为什么在一种情况下,我会收到带有字符串文字的已弃用转换警告,而在另一种情况下却没有?
- 三种类型之间的隐式转换交互
- 如何以及何时使用(或不使用)三种特定情况的例外
- 在给定前景色和背景色的情况下,我如何计算第三种颜色
- 如何使用条件运算符表达三种情况