C++ try是什么

C++ try是什么,第1张

C++中try是用来包围可能出现问题的代码区域的一个函数。和catch结合使用的,来捕捉程序中的异常

捕获异常的代码一般如下:

try {

throw E();

}

catch (H h) {

//何时我们可以能到这里呢

}

1如果H和E是相同的类型

2如果H是E的基类

3如果H和E都是指针类型,而且1或者2对它们所引用的类型成立

4如果H和E都是引用类型,而且1或者2对H所引用的类型成立

从原则上来说,异常在抛出时被复制,我们最后捕获的异常只是原始异常的一个副本,所以我们不应该抛出一个不允许抛出一个不允许复制的异常。

此外,我们可以在用于捕获异常的类型加上const,就像我们可以给函数加上const一样,限制我们,不能去修改捕捉到的那个异常。

还有,捕获异常时如果H和E不是引用类型或者指针类型,而且H是E的基类,那么h对象其实就是H h = E(),最后捕获的异常对象h会丢失E的附加携带信息。

将try catch语句块写入到一个while(标志)循环中,当执行已经成功后记得在代码中将标志的值置为false即可退出循环。

还有一个办法,直接使用goto强制跳转也是可以的,但缺点是程序容易陷入死循环,而其不易读。

C#中通常使用try-catch语句来捕获和处理异常。下面我们看看try-catch语句的使用语法。

try

{

可执行语句块;

}

catch

(

Exception

e

)

{

异常处理语句;

throw;

}

1、try语句块中放置可能存在异常的代码块。若执行try语句块时有异常发生,则程序抛出的异常,由catch语句捕获;若try语句块没产生异常,程序会直接跳出try-catch语句。

2、catch语句块紧跟在try语句块后面,它可以捕获try语句块中抛出的异常。注意catch关键字后有一对小括号,小括号中需放置异常类参数,参数名是可省略的。当try语句抛出异常时,抛出的异常类型会与catch语句中的异常类型进行匹配,若匹配成功,则执行catch语句块中的内容。

3、Exception是所有异常类的父类,它能和所有异常类匹配。前一小节抛出的IndexOutOfRangeException异常类也是Exception的子类。需注意的是:如果catch语句块不带参数,那么catch语句也能捕获所有异常。

4、throw关键字表示抛出一个异常,可省略。

同时try-catch语句通常和finally语句一起使用,具体的使用方法可以参考秒秒学网站讲解异常的那一章,其实上面的内容我也是从那里学来的。

try就像一个网,把try{}里面的代码所抛出的异常都网住,然后把异常交给catch{}里面的代码去处理,最后执行finally之中的代码。

无论try中代码有没有异常,也无论catch是否将异常捕获到,finally中的代码都一定会被执行。

例如:当除数为0时,编译不会报错,如果没有try/catch的话,程序直接崩溃。用try/catch的话,则可以让程序运行下去,并且输出为什么出错。

扩展资料

java中trycatch的使用原则

1、当代码中可能会遇到的异常需要用try{ }catch{Exception e}来处理,否则导致程序崩溃。

2、不要在for循环里面嵌套try catch子句。

3、尽可能的减少try catch子句的嵌套,会影响性能。

4、同一个try子句中多个catch时,异常处理原则。

当一个try块中包含众多语句,可能抛出多种不同的异常,只有通过多个catch块来捕获不同的异常。而如果两个异常存在继承关系,应该把子类异常放在父类异常的前面来捕获,或者把最小范围异常放在最前面 ,范围大的放在后面。

因为是按照catch块从上往下匹配,当它匹配某一个catch块的时候,就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。

如果有finally的话进入到finally里面继续执行。Exception这个异常的根类一定要刚在最后一个catch里面,如果放在前面或者中间,任何异常都会和Exception匹配的,就会报已捕获到异常的错误。

class TestTryCatch

{

static int GetInt(int[] array, int index)

{

try

{

return array[index];

}

catch (SystemIndexOutOfRangeException e) // CS0168

{

SystemConsoleWriteLine(eMessage);

//set IndexOutOfRangeException to the new exception's InnerException

throw new SystemArgumentOutOfRangeException("index parameter is out of range", e);

}

}

}

MSDN实例,看看吧。

try

{

//这里是要实现的程序代码

}

finally

{

//这里是不管try里有没有错误都回执行的代码

//注意:这里不能用 return 停止程序

}

catch

{

//这里是try有错误时执行的代码

//这可用return停止程序

}

顺便说下,请把要在整个代码块加try,这样程序回执行比较慢的。

因为加了try编译程序回多加些异常处理程序,编译出来的程序回比较大。

应该在你认为可能发生错误的地方加try

以上就是关于C++ try是什么全部的内容,包括:C++ try是什么、c# 程序中try {}catch{}用法;如何在catch抛出异常后重新执行try、C#中如何处理异常怎么使用try-catch语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://www.54852.com/zz/10078983.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存