问题:当一个函数返回,返回值可能表明发生了一个错误。|
你能确定的假设可能违反了?答案是,运营商新的(实际上是调用一个函数分配做)如果用户内存失败。如果发生这种情况,pandata将被设置为零,当我们使用下标操作符对pandata,程序会崩溃。这里的错误检查新版本:
问题:当程序接收输入(无论是从用户,或文件),输入不正确的格式。这里的示例程序,你看到的:
这里是检查用户输入是否有效版本:
1
2
3
|
//
Declare an array of 10 integers int
*panData = new
int [10]; panData[5]
= 3; |
1
2
3
4
5
6
|
//
Delcare an array of 10 integers int
*panData = new
int [10]; //
If something went wrong if
(!panData) exit (2);
//
exit the program with error code 2 panData[5]
= 3; |
1
2
3
4
5
6
7
|
char
strHello[] = "Hello,
world!" ; std::cout
<< "Enter
an index: " ; int
nIndex; std::cin
>> nIndex; std::cout
<< "Letter
#"
<< nIndex << "
is "
<< strHello[nIndex] << std::endl; |
1
2
3
4
5
6
7
8
9
10
|
char
strHello[] = "Hello,
world!" ; int
nIndex; do { std::cout
<< "Enter
an index: " ; std::cin
>> nIndex; }
while
(nIndex < 0 || nIndex >= strlen (strHello)); std::cout
<< "Letter
#"
<< nIndex << "
is "
<< strHello[nIndex] << std::endl; |
假设错误处理
现在你知道假设错误通常发生,让我们完成了在不同的方式处理他们当他们出现。没有最好的方式来处理一个错误-这真的取决于问题的性质。
这里有一些典型的反应:
1)悄悄地跳过代码依赖于假设是有效的: