throw直接报错
int main()
{if (true) throw std::runtime_error("Error!");
}
runtime_error(或者其他错误类型)是一个类, 必须初始化, 需使用string或者c风格字符串初始化.
throw放try里, catch会接住throw的error
大概就是[catch]-->{[throw]-->[try]}的关系
报完错直接运行下面的
#include <iostream>
#include <stdexcept>
void game()
{std::cout << "杨雨贤小游戏开始啦!" << std::endl;try{int a, b; std::cin >> a >> b;if (a + b == 24)std::cout << "逆天" << std::endl;else if (a + b == 25)throw std::runtime_error("杨雨贤飞起来了!");elsethrow std::invalid_argument("杨雨贤出错了!");}catch (std::runtime_error& RE){std::cout<<RE.what()<<std::endl;}catch (std::invalid_argument& IE){std::cout << IE.what() << std::endl;}std::cout<<"游戏结束"<<std::endl;}int main()
{game();
}
我们使用第一个错误输入:
可见程序正常运行, 没有终止