美文网首页
C++中如何进行异常处理,及和java中的异常对比

C++中如何进行异常处理,及和java中的异常对比

作者: 依玲之风 | 来源:发表于2017-11-18 20:14 被阅读0次

在NDK中使用c++时,当发生异常时怎么处理的,所以今天在此我就给大家说说C++中的异常处理,让初学C++的小伙伴能够了解C++中的异常

首先C++中的异常处理要比JAVA中的异常处理要自由,想我们在C++中捕获到异常时可以向函数外抛任意类型的异常,而在JAVA中的就不能这样玩了,在JAVA中要么抛指定类型的异常比如 “空指针 异常(NullPointerException)”,要么抛自定义的异常,而在C++就没有这样的限制,所以说在c++中抛异常要比在JAVA中抛异常要自由得多了,在下面我们在代码中体现C++中的异常自由性,同样在C++中我们要捕获异常也是用try{}catch(){}语句,和JAVA一样。

#include <iostream>
using namespace std;
void sun(int a ,int b){
if(b == NULL){
throw "第二个参数不能为空";
    }
}
void main(){
     try{
             sun(10,0);//在c++中0和NULL是一样的
        }
        catch(char*  s){  //这里的捕获的异常类型是你抛出的异常类型,我上面抛出的类型是字符串所以我这里是char
             cout<< s<< endl;

        } 
   system("pause");
}
QQ图片20171118172002.png

上图就是程序运行的结果,可以抛出任意类型的异常。

那么未知的类型的异常要怎么捕获呢?其实也很简单,接下来让代码告诉我们,还是刚才的代码,改一下catch()的参数就可以捕获任意类型的异常了,改成:catch(...)在括号中英文状态下三个点即可,不过这样捕获异常有一个不足的地方那就是我们不能知道程序发生的什么样的异常,只是知道代码中发生了异常。

在java中的不能这样玩的,必须要指定异常类型,那么在C++中有没有标准的异常类型呢?是有的。c++中也提供标准异常类型给我们调用。

void show(int index){
    if(index >10){
        throw out_of_range("超出范围");
     }
}
void main(){
  try{
          show(20) ;
   }catch(out_of_range e){
           cout << e.what() << endl;
   }
   system("pause");
  }

代码执行后如图:


QQ图片20171118173931.png

说明我们已经捕获到该异常。
c++中提供了十几种标准的异常类型,这里我就不一一列出了,可以到Vsual Studio中看。
c++中能不能玩自定义的异常呢?也是可以的,那么玩自定义的异常套路和java是一样的都是集成Exception这个类只不过在c++中exception是小写的 ,那么下面就来一个定义的异常

 class MyException : public exception{
       public:
                MyException(char* msg) : exception(msg){}
 }
 void show(int index){
        if(index > 10){
                throw MyException("MyException异常");
                //另外一种抛出异常的写法就是抛出异常指针,但是我个人不推荐抛出异常指针,好果是抛出异常指针忘记释放,就会造成内存泄露
            // throw new MyException("MyException异常");//这里是动态内存分配,所以当我们这样写的时候要释放内存
         }
 }
 void main(){
        try{
    show(20);
}
catch (MyException& e){ //这里最好用引用,这里我们在用这个异常函数时就不会去创建副本,如是想看一下是否有创建副本,可以重写一下异常函数的拷贝函数即可看到
    cout << e.what() << endl;
}
system("pause");
  }
QQ图片20171118200344.png

上图就是程序运行效果。
好了C++的异常处理就说到这里了,如是发现有错误的地方,可以留言给我,大家共同学习。

相关文章

  • C++中如何进行异常处理,及和java中的异常对比

    在NDK中使用c++时,当发生异常时怎么处理的,所以今天在此我就给大家说说C++中的异常处理,让初学C++的小伙伴...

  • Android NDK开发之旅23--C++--异常处理

    异常处理 与Java类似,C++也有异常处理。 异常类型 C++中,异常的类型是任意的,如下: throw不同类型...

  • (五)C++中的异常处理与模板类

    C++中的异常处理与模板类 一、C++ 中的异常处理 1、异常处理 在C++ 中可以抛出任何类型的异常,根据抛出的...

  • Exception

    Java 中 9 个处理 Exception 的最佳实践 Java 中的异常和处理详解 如何优雅的设计 Java ...

  • JNI-NDK(JNI静态缓存、异常处理、手写简单的Parcel

    1、C++中捕捉异常 抛什么类型的异常,就捕捉什么异常 2、JNI中异常处理 JNI中异常处理分为主动清除内部异常...

  • Java异常简介及其架构

    Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理...

  • java 异常

    Java中异常处理是识别及响应错误的机制。有效地异常处理能使程序更加健壮。异常处理是非功能性需求。 异常的处理机制...

  • iOS--基础1

    异常处理--Exception Handling Objective-C语言具有类似于Java和c++的异常处理...

  • JAVA异常

    一、简介 Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正...

  • Android NDK(三)- JNI 异常

    常用方法 使用例 1 - C++ 中抛出异常 使用例 2 - C++ 捕获 Java 中的异常

网友评论

      本文标题:C++中如何进行异常处理,及和java中的异常对比

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