D Программирование - обработка исключений

Исключением является проблема, возникающая во время выполнения программы. Исключение AD - это реакция на исключительное обстоятельство, которое возникает во время работы программы, например, попытка деления на ноль.

Исключения позволяют передавать управление от одной части программы к другой. D обработка исключений построена на трех ключевых словахtry, catch, а также throw.

  • throw- Программа выдает исключение при обнаружении проблемы. Это делается с помощьюthrow ключевое слово.

  • catch- Программа перехватывает исключение с помощью обработчика исключений в том месте программы, где вы хотите обработать проблему. Вcatch ключевое слово указывает на перехват исключения.

  • try - А tryblock определяет блок кода, для которого активированы определенные исключения. За ним следует один или несколько блоков catch.

Предполагая, что блок вызовет исключение, метод перехватывает исключение, используя комбинацию try а также catchключевые слова. Блок try / catch помещается вокруг кода, который может вызвать исключение. Код в блоке try / catch называется защищенным кодом, а синтаксис для использования try / catch выглядит следующим образом:

try { 
   // protected code 
} 
catch( ExceptionName e1 ) { 
   // catch block 
} 
catch( ExceptionName e2 ) { 
   // catch block 
} 
catch( ExceptionName eN ) { 
   // catch block 
}

Вы можете перечислить несколько catch операторы для перехвата различных типов исключений в случае, если ваш try block вызывает более одного исключения в разных ситуациях.

Выбрасывание исключений в D

Исключения могут быть выброшены в любом месте блока кода, используя throwзаявления. Операнд операторов throw определяет тип исключения и может быть любым выражением, а тип результата выражения определяет тип генерируемого исключения.

В следующем примере возникает исключение при выполнении условия деления на ноль:

пример

double division(int a, int b) { 
   if( b == 0 ) { 
      throw new Exception("Division by zero condition!"); 
   }
   
   return (a/b); 
}

Выявление исключений в D

В catch блок после tryблок перехватывает любое исключение. Вы можете указать, какой тип исключения вы хотите перехватить, и это определяется объявлением исключения, которое появляется в скобках после ключевого слова catch.

try { 
   // protected code 
} 

catch( ExceptionName e ) { 
   // code to handle ExceptionName exception 
}

Приведенный выше код перехватывает исключение ExceptionNameтип. Если вы хотите указать, что блок catch должен обрабатывать любой тип исключения, которое генерируется в блоке try, вы должны поместить многоточие, ..., между круглыми скобками, заключая объявление исключения следующим образом:

try { 
   // protected code 
} 

catch(...) { 
   // code to handle any exception 
}

В следующем примере создается исключение деления на ноль. Он зацеплен за блокировку.

import std.stdio; 
import std.string;
  
string division(int a, int b) { 
   string result = "";  
   
   try {  
      if( b == 0 ) {
         throw new Exception("Cannot divide by zero!"); 
      } else { 
         result = format("%s",a/b); 
      } 
   } catch (Exception e) { 
      result = e.msg; 
   }
   
   return result; 
} 
 
void main () { 
   int x = 50; 
   int y = 0;  
   
   writeln(division(x, y));  
   
   y = 10; 
   writeln(division(x, y)); 
}

Когда приведенный выше код компилируется и выполняется, он считывает файл, созданный в предыдущем разделе, и дает следующий результат:

Cannot divide by zero!
5