假设错误处理

问题:当一个函数返回返回值可能表明发生了一个错误。|
1
2
3
// Declare an array of 10 integers
int *panData = new int[10];
panData[5] = 3;
你能确定的假设可能违反了?答案是,运营商新的(实际上是调用一个函数分配做)如果用户内存失败。如果发生这种情况,pandata将被设置为零,当我们使用下标操作符对pandata,程序会崩溃。这里的错误检查新版本
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)悄悄地跳过代码依赖于假设是有效的:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值