Рубрики

Сравнение обработки исключений в C ++ и Java

Оба языка используют ключевые слова try , catch и throw для обработки исключений, и значение блоков try , catch и free также одинаково для обоих языков. Ниже приведены различия между обработкой исключений в Java и C ++.

1) В C ++ все типы (включая примитив и указатель) могут быть выброшены как исключение. Но в Java могут быть выброшены только исключаемые объекты (объекты Throwable являются экземплярами любого подкласса класса Throwable). Например, следующий тип кода работает в C ++, но подобный код не работает в Java.

#include <iostream>

using namespace std;

int main() 

{

   int x = -1; 

  

   // некоторые другие вещи

   try {

      // некоторые другие вещи

      if( x < 0 )

      {

         throw x;

      }   

   }

   catch (int x ) {

      cout << "Exception occurred: thrown value is " << x << endl;

   }

   getchar();

   return 0;

}

Выход:
Произошло исключение: выброшенное значение -1

2) В C ++ есть специальный catch, называемый «catch all», который может перехватывать любые исключения.

#include <iostream>

using namespace std;

int main() 

{

   int x = -1; 

   char *ptr;

     

   ptr = new char[256];

     

   // некоторые другие вещи

   try {

      // некоторые другие вещи

      if( x < 0 )

      {

         throw x;

      }      

      if(ptr == NULL)

      {

         throw " ptr is NULL ";

      }   

   }

   catch (...) // ловить все

   {

      cout << "Exception occurred: exiting "<< endl;

      exit(0);

   }

     

   getchar();

   return 0;

}

Выход:
Произошло исключение: выход

В Java для всех практических целей мы можем перехватывать объект Exception, чтобы перехватывать все виды исключений. Потому что, как правило, мы не отлавливаем Throwable (s), кроме Exception (s), которые являются ошибками

catch(Exception e){

  …….

}

3) В Java есть блок, называемый finally, который всегда выполняется после блока try-catch. Этот блок можно использовать для очистки. В C ++ такого блока нет.

// создаем тип исключения

class Test extends Exception { }

  

class Main {

   public static void main(String args[]) {

  

      try {

         throw new Test();

      }

      catch(Test t) {

         System.out.println("Got the Test Exception");

      }

      finally {

         System.out.println("Inside finally block ");

      }

  }

}

Выход:

Got the Test Exception
Inside finally block

4) В C ++ все исключения не проверяются. В Java есть два типа исключений — проверенные и непроверенные. Смотрите это для более подробной информации о проверенных и непроверенных исключениях.

5) В Java новое ключевое слово throws используется для перечисления исключений, которые могут быть выброшены функцией. В C ++ нет ключевого слова throws , для этого также используется то же ключевое слово throw .

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Сравнение обработки исключений в C ++ и Java

0.00 (0%) 0 votes