c++语言,try catch语句抛出异常。循环输入x,y,算xy,如果y = 0,就抛出异常,输入y就继续输入

c++语言,try catch语句抛出异常。循环输入x,y,算xy,如果y = 0,就抛出异常,输入y就继续输入,第1张

你的语句顺序不对, cout <<"x / y = " <<(x / y) <<endl在这句时候如果y是0,那么程序直接就崩了,不会运行到你下一句的容错语句。所以就出现了你那个问题,只要把语句顺序换下就好了。

cout <<"x / y = " <<(x / y) <<endl

if (y == 0) {

throw runtime_error("y must not be 0")

}

这俩句 换下位置。

不是 catch只是为了捕获到异常而进行处理 如果你不需要处理异常的话 就不用try-catch了 直接throw就可以了 或者是你觉得可能会有异常 但是这异常是由于程序解决不了的 不如数据库链接不上了 那你就throw异常 然后输出异常就可以了 !

异常处理允许用户以一种有序的方式管理运行是出现的错误。使用C++的异常处理,用户程序在错误发生时可自动调用一个错误处理程序。异常处理最主要的优点是自动转向错误处理代码,而以前在大程序中这些代码是由“手工”编制的。

注:异常处理不属于C++原始规范的范畴。它是在1983年间发展起来的。异常处理由建

议的ANSI C++标准定义,被现存大多数C++编译程序所支持。

C++异常处理建立在三个关键字基础之上:try、catch和throw。

通常,监测异常情况的程序语句包含在try中。如果try块中发生了异常(也就是错误),则用throw处理。异常由catch捕获,并得到处理。

下面详细讨论这些论点。

抛出异常的语句必须在try块中执行(在try块中调用的函数也可能抛出异常)。任何异常必须由紧跟在抛出异常的try语句之后的catch语句捕获。

try和catch的一般形式如下:

try{

// try block

}

catch(type1 arg){

//catch block

catch (type2 arg){

// catch block

}

catch(type3 arg){

// catch block

catch(typeN arg) {

// catch block

try块必须包括用户程序中监测错误的部分。它们可以短至函数中的几条语句,也可以是象try块(有效地监测整个程序)中main()函数的代码那样完全包装。

异常发生时,由相应的catch语句去捕获并处理此异常。与一个try相关的catch语句可能不止一条。至于使用哪条catch语句,则由异常的类型决定。也就是说,如果由catch语句说明的数据类型与异常情况匹配,则此catch语句(其它catch语句跳过)执行。当捕获一个异常时,arg将接受它的值。可以捕获任何类型的数据,包括用户创建的类。如果try块中无异常(错误)发生则不执行任何catch语句。

throw语句的一般形式如下:

throw exception;

throw必须在try块中或在try块中任何直接或间接调用的函数中执行。exception是被抛出的一个值。

如果对于抛出的异常没有合适的catch语句,则会发生程序异常终止。如果用户的编译程序符合建议的ANSI C++标准,那么抛出一个未被处理的异常会引起调用terminate()函数。缺省时,terminate()调用abort()终止用户程序,但如果用户愿意,则可以定义自己的终止处理程序。


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

原文地址:https://54852.com/sjk/6771578.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存