问题:当一个函数返回,返回值可能表明发生了一个错误。|
你能确定的假设可能违反了?答案是,运营商新的(实际上是调用一个函数分配做)如果用户内存失败。如果发生这种情况,pandata将被设置为零,当我们使用下标操作符对pandata,程序会崩溃。这里的错误检查新版本:
问题:当程序接收输入(无论是从用户,或文件),输入不正确的格式。这里的示例程序,你看到的:
这里是检查用户输入是否有效版本:
|
1
2
3
|
//
Declare an array of 10 integersint
*panData = new
int[10];panData[5]
= 3; |
|
1
2
3
4
5
6
|
//
Delcare an array of 10 integersint
*panData = new
int[10];//
If something went wrongif
(!panData) exit(2);
//
exit the program with error code 2panData[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)悄悄地跳过代码依赖于假设是有效的:
7211

被折叠的 条评论
为什么被折叠?



