首页 > 其他分享 >[OI] throw

[OI] throw

时间:2024-06-19 21:35:36浏览次数:7  
标签:OI int try catch main hdk 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,int,try,catch,main,hdk,throw
From: https://www.cnblogs.com/HaneDaCafe/p/18257448

相关文章

  • [JOI Open 2024] 中暑
    原问题的规则实际上很大程度上是为最小化而设计的,但是我们却要求的是最大化,这意味着原问题的规则实际上是与我们要最优化的问题相矛盾,可行的办法可能是通过一些转化使新问题与规则刚好契合。考虑原问题的规则实际上告诉我们只有当两边都不能放的时候才会对答案产生贡献,意味着实际......
  • 安装metasploitable2
    一、介绍Metasploitable2虚拟系统是一个特别制作的ubuntu操作系统二、安装virtualbox三、下载metasploitable2,网址https://sourceforge.net/projects/metasploitable/files/Metasploitable2/,解压如下 四、打开virtualbox1新建虚拟机2选择虚拟硬盘3选择注册4......
  • P1064 [NOIP2006 提高组] 金明的预算方案
    金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 ......
  • Android嵌套滑动NestedScrollingChild以及NestedScrollingParent处理流程
    publicinterfaceNestedScrollingChild{publicvoidsetNestedScrollingEnabled(booleanenabled);publicbooleanisNestedScrollingEnabled();publicbooleanstartNestedScroll(intaxes);publicvoidstopNestedScroll();publi......
  • C#使用 NPOI 添加图片到 Excel 单元格
    入参:工作簿对象,某个单元格对象,将要写入的图片字节数组 对象解释:XSSFClientAnchor:可设置图片放置的开始、结束单元格,X、Y起始点位(这里挖个坑,具体设置多少可以根据行高等进行计算,具体可参考pic.Resize()的实现)///<summary>///将图片添加到工作簿///</summary>/......
  • 点云分割网络PointConv
    PDF:《PointConv:DeepConvolutionalNetworkson3DPointClouds》CODE:https://github.com/DylanWusee/pointconv一、大体内容PointConv是一种在非均匀采样下对3D点云进行卷积的运算,可以用来构建深度卷积网络,其将卷积核视为由权重函数和密度函数组成的三维点的局部坐标的非......
  • 【Android面试八股文】SSL握手的过程都经历过什么?
    文章目录一、为什么要设计SSL/TLS?二、SSL/TLS的历史概述SSL(SecureSocketsLayer)TLS(TransportLayerSecurity)总结三、SSL/TLS加密过程中如何保证公钥不被篡改?公钥加密计算量太大,如何减少耗用的时间?3.1如何保证公钥不被篡改?3.2公钥加密计算量太大,如何......
  • 【Android面试八股文】谈谈你对TCP 流量控制与拥塞控制的理解
    文章目录一、流量控制1.1流量控制的概念1.2滑动窗口1.3零窗口二、拥塞控制2.1拥塞控制的概念2.2慢启动2.3拥塞避免2.4快重传与快恢复2.4.1快重传2.4.2快恢复三、总结TCP的拥塞控制和流量控制虽然采取的动作很相似,但拥塞控制与网......
  • 【Android面试八股文】你说一说什么是双亲委托机制?为什么需要双亲委托机制?
    一、双亲委托机制1.1双亲委托机制概述双亲委托机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。如果父类加载器还存在父类加载器,则会一直向上委派,直至最终交由顶层的启动类加载器完成类加载,每个类加载器都是如此,只有在所......
  • Android 配置蓝牙遥控器键值
    文章目录篇头一、规格书二、红外按键配置三、蓝牙按键配置3.1查看设备号3.1.1方式一:dumpsysinput3.1.2方式二:cat/proc/bus/input/devices3.2配置kl文件3.2.1方案商原始配置3.2.2Generic.kl文件3.2.3重映射蓝牙按键3.2.4完成Vendor\_568a\_Product\_9869.kl......