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