[OI] throw
throw 主要是用来抛出异常.
throw
可以直接向主程序 throw 一个东西,可以是各种数据类型,显示在界面上就是抛出的数据类型.
int main(){
throw 1;
}
terminate called after throwing an instance of 'int'
--------------------------------
Process exited after 0.5906 seconds with return value 3
或者是自己定义的数据类型:
class hdk{};
int main(){
throw hdk{};
}
terminate called after throwing an instance of 'hdk'
--------------------------------
Process exited after 0.5983 seconds with return value 3
可以看出返回值都是 \(3\). 因为抛出错误意味着程序非正常结束了.
try{throw}catch
因为这样抛出来不是很直观,因此 c++ 有一个专门的语句 try-throw
class hdk{};
int main(){
try{
if(true) throw hdk{};
}
catch(hdk){
cout<<"Error"<<endl;
exit(114514);
}
}
我们把 throw 语句放进 try 里面,这样的话,throw 的东西不是直接输出到运行界面,而是扔到 catch 执行.
这个 catch 并不是逻辑判断,而是类型判断,只要 try 里扔出来的东西和它对上了就执行.
所以还有多行 catch 判断,直观点可以写成这样:
class DevidedByZero{};
class AnswerIsZero{};
int main(){
while(1){
int a,b;
cin>>a>>b;
try{
if(b==0) throw DevidedByZero{};
else if(a/b==0) throw AnswerIsZero{};
else cout<<a/b<<endl;
}
catch(DevidedByZero){
cout<<"Error: DevidedByZero"<<endl;
}
catch(AnswerIsZero){
cout<<"Error: AnswerIsZero"<<endl;
}
}
}
4 2
2
5 0
Error: DevidedByZero
0 5
Error: AnswerIsZero
或者使用 c++ 提供的标准错误流输出:
cerr<<"Error: DevidedByZero"<<endl;
效果是一样的
[OI] throw的更多相关文章
- Hive学习之自己定义聚合函数
Hive支持用户自己定义聚合函数(UDAF),这样的类型的函数提供了更加强大的数据处理功能. Hive支持两种类型的UDAF:简单型和通用型.正如名称所暗示的,简单型UDAF的实现很easy,但因为使 ...
- C++异常处理:try,catch,throw,finally的用法
写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使 ...
- C++异常处理: try,catch,throw,finally的用法
写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 再见,OI
你好,NOIP 2015年9月1日 正式成为了福建省莆田一中的一名高一成员 后来学校搞了选修 大家都很激动 因为自己的兴趣和特长能够得到发挥了(或者说能逃课或者看好多电影) 发现选修提供的选项中有好几 ...
- java中的throw与throws的区别
什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...
- js 利用throw 写的一个小程序
在下边的小程序中比较特殊的是使用isNaN()函数判断一个参数是不是数字, <!DOCTYPE html> <!DOCTYPE html> <html> <h ...
- Java 中 手动抛出异常: throw new Exception("错误信息") 错误信息的获得
当然需要先用try catch捕获,但注意new Exception("")括号里的字符串其实是异常原因,所以获取是要用ex.getCause().getMessage() int ...
- 告别我的OI生涯
本文章写于2008年12月15日. 随着2008noip的结束,我也结束了我的OI生涯. 信息竞赛也许是从小到大让我最最努力的一件事.我记得参加2006noip初赛前,每天中午为了上信息课都吃不上中午 ...
- throw exception
Throw new CustomerException('Customer message'); // App\Exceptions\Handler.php public function rende ...
随机推荐
- EFCore DbFirst从数据库生成实体类
1.点击"工具"->"NuGet包管理器"->"程序包管理器控制台" 分别安装以下几个包 Mysql 版本: Install-P ...
- 从零开始写 Docker(十九)---增加 cgroup v2 支持
本文为从零开始写 Docker 系列第十九篇,添加对 cgroup v2 的支持. 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 d ...
- OI生涯回忆&退役之后
一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的进程 --<庄子·秋水> 好吧,现在是2024年7月24日,我现在正坐在某编程机构的办公室电脑旁,写下这些文字,是啊,我已经退役将近两 ...
- HTML+JavaScript+CSS做一个界面
下面是一个web界面主要是前端没有后端功能:关于JavaScript几种比较常见的样式 Javaweb(1),html <!DOCTYPE html> <html lang=&q ...
- SpringBoot整合Redis,并处理序列化反序列化问题
1.添加Redis依赖 在项目的pom.xml文件中添加Redis的依赖项.例如,可以使用spring-boot-starter-data-redis依赖项来引入Redis的支持. <depen ...
- 【Forza Horizon 5】频繁断网解决办法
参考自文章: https://www.acfun.cn/a/ac32056183_2 简而言之就是玩地平线5的时候不要挂着腾讯的QQ.TIM.微信
- 【Java-GUI】02 Dialog对话框
--1.对话框 Dialog java.awt.Dialog 和Window一样可以独立存在的一个窗体 但是注意: 1.Dialog对象一定需要一个依附的父级窗口 2.两种模式(模式和非模式),模式打 ...
- [VS Code扩展]写一个代码片段管理插件(一):介绍与界面搭建
@ 目录 VS Code扩展机制 项目搭建 创建UI元素 活动栏按钮 主边栏视图 主边栏工具栏按钮 侧边栏右键菜单 编辑器右键菜单 项目地址 [VS Code扩展]写一个代码片段管理插件(一):介绍与 ...
- 台式机,华硕主板z390ws,cpu为i7-9700k 安装Ubuntu18.04系统 使用独立显卡工作 (但是显示器HDMI线缆插在主板的HDMI插槽)开机进入系统运行几分钟后自动重启,此时主板显示错误码为AMI错误
如题: 手上有这样一台新的工作站,配置为华硕主板z390ws,cpu为i7-9700k ,独立显卡为技嘉2060super, 安装Ubuntu18.04系统 . 在主板bios中进行设置(设置使用 P ...
- Redis中的Hash类型常用命令
一.hset命令作用:设置hash类型值:格式:hset key field value案例:192.168.0.111:0>hset product name 苹果"1" ...