美文网首页
关于try,cathch抛出异常

关于try,cathch抛出异常

作者: 太平小小草 | 来源:发表于2018-10-16 16:23 被阅读0次
  • 在学习C++的过程中,接触try,catch语句很早,但很少认真研究,也很少主动去使用。几年前有个同事问我怎么使用try,catch的问题,我当时没回答出来。去年略微学一下安卓开发,看到java代码里大量使用try,catch,想想肯定是有原因的。
  • 事实上,在我这么多年参入的C++项目中,看到使用try,catch的地方并不多,至少不像java那么普遍。印象最深的,就是我编写自动升级程序时,借用了网上的一个http下载文件,该文件下载线程里,判断下载出错时使用try,catch,抛出了很多种异常情况。
  • 为什么一般C++应用程序程序员不愿意使用try,catch来捕捉错误呢?

    我的体会是:
    1,C++写应用层代码,因为C++语言的特性,实现起来比较底层和细节,需要程序员自己保证程序的健壮性,在代码里判断是否出错,写throw抛出异常的代码,这样就加大了工作量。如果每个地方都做这样的异常判断并抛出错误,程序健壮性是好,但是太花时间了。
    比如下面这段代码:
try{
string str = "liangchuan finish the job!";
char  oneword = str[100];
}
catch(exception e)
{
cout<<"[1]out of bound!"<<endl;
}

   这段代码是不会抛出异常的,因为C++的基本运算符 [] 只是做基本的访址操作,不会throw出异常。

2,既然需要程序员自己来判断异常并抛出,程序员就完全可以通过错误日志打印,或别的手段来侦查错误,没有必要非得用try,catch。比如写服务器端代码,判断出了错误信息直接用zlog日志打印出来,方便还直观。使用try后面那么大个 { 括起来不好阅读,很多地方都得加个try,catch,还与日志有重复。

3,应用程序调用的一些C++库中不一定有try,catch异常抛出。我们即使使用try,catch,很多错误依然无法捕捉到。

string str = "liangchuan finish the job!";
try{
char ch2 = str.at(100);
cout<<ch2<<endl;
}
catch(exception &e)
{ //exception类位于<exception>头文件中
cout<<"[2]out of bound!"<<endl;
}

这段代码会抛出异常,因为string::at函数里,做了抛出异常处理。所以不需要程序员自己来写throw出异常。但是,有怀疑有一些被调用的库里没做这种处理,或者处理不完善。

相关文章

  • 关于try,cathch抛出异常

    在学习C++的过程中,接触try,catch语句很早,但很少认真研究,也很少主动去使用。几年前有个同事问我怎么使用...

  • Python3-异常

    异常 处理异常 抛出异常 Try … Finally with 语句

  • java基础--异常

    1.处理异常 try-catch以及try-catch-finally捕获异常 try{ //一些会抛出异常的...

  • try throw catch

    try抛出异常,catch捕获异常格式: 执行:首先去运行try中的代码如果正常则不运行catch,如果try中代...

  • Flutter/Dart - 异常处理

    异常处理 dart 使用经典的try-catch处理异常,使用关键字throw抛出一个异常。 抛出异常 首先,看看...

  • 学习笔记8-异常处理

    异常处理 使用try和catch处理异常 抛出异常 通过throw关键字来抛出异常,执行到throw语句后,函数会...

  • sleep()-03-02

    Sleep需要捕获或者抛出异常,但是run方法不能抛出异常throws,所以在run方法中只能捕获异常(try c...

  • Swfit之try、throw与do catch

    throws: 表明抛出异常,搭配try时需要使用do-catch处理掉异常;使用try?有异常返回空,类似于可选...

  • 10.断言与异常

    一、实验目的 断言 NameError TypeError 异常处理(try..except) 异常抛出(rais...

  • Javascript 菜鸟 Structure

    ○○○ ○○○ 错误 try 和 catch:测试代码块 ○○○ Throw:抛出异常 exception ○...

网友评论

      本文标题:关于try,cathch抛出异常

      本文链接:https://www.haomeiwen.com/subject/efdhzftx.html