编写程序,从控制台随机输入三个整数,按降序排列输出。要求捕获异常并处理。

编写程序,从控制台随机输入三个整数,按降序排列输出。要求捕获异常并处理。,第1张

以下是C++代码,实现从控制台随机输入三个整数,按降序排列输出,并且在输入时捕获可能抛出异常

cppCopy code#include <iostream>#include <stdexcept>// 异常头文件#include <algorithm>// STL头文件using namespace stdint main() {    int a, b, c   try { // 尝试执行输入 *** 作

cout <<"请输入三个整数,用空格隔开:" <<endl

cin >>a >>b >>c       if (cin.fail()) { // 如果输入失败,抛出异常

throw runtime_error("输入的不是整数")

}

}    catch (runtime_error e) { // 捕获异常并输出错误信息

cerr <<"错误:" <<e.what() <<endl       return -1// 返回错误代码

}    int arr[3] = {a, b, c}   sort(arr, arr + 3, greater<int>())// 使用STL的sort函数进行降序排序

cout <<"排序后的结果为:" <<arr[0] <<" " <<arr[1] <<" " <<arr[2] <<endl   return 0// 返回正常退出代码}

解释:

try 块尝试执行输入 *** 作,如果输入失败,则抛出 runtime_error 类型的异常。

catch 块捕获 runtime_error 类型的异常,并输出错误信息。

sort(arr, arr + 3, greater<int>()) 对数组进行降序排序。

cerr 是标准错误流,用于输出错误信息。

what() 方法返回异常对象的错误信息。

先定义一个空的类,该类就可以看作是一个异常类,这个异常类将 抛出和捕捉关联起来,当程序中抛出了一个错误,那么是抛出的错误因为异常类的关联,被捕捉(其实,该异常类的作用就等同于一个标志)

看看具体的使用:

#include<iostream>

using namespace std

class wrong{} //异常类

class people

{

public:

people(int i) { len = i pt = new int[len] }

int &operator[](int &r)

int getlen() { return len }

private:

int len

int *pt

}

int &people::operator[](int &r)

{

if (r < len && r >= 0)

return pt[r]

else

throw wrong() //抛出错误

}

int main()

{

people one(20)

try //查找错误

{

for (int i = 0 i < 50 i++) //因为数组的长度在调用构造函数的时候已经将其置为20,那么这里的50超出了数组长度

{

one[i] = i

cout << one[i] << endl

}

}

catch (wrong) //捕获抛出的错误

{

cout << "问题已经得到解决" << endl

}

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12199252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存