Поделиться через


попробуйте, перехватывайте и вызывайте выписки (C++)

Исключения C++ используют попыток, перехвата и выдают ключевые слова.

Сигнализирует выражения хода ошибка или исключительное состояние.Можно использовать объект любого типа в качестве операнда выражения.Этот объект обычно используется для передачи сведений об ошибке.Обычно необходимо использовать std:: класс исключения или одного из производных классов, определенных в стандартной библиотеке, или если ни одно из этих соответствующих, а затем наследуются исключения из собственного класса std:: исключение.

Блок try содержит один или несколько выписки, которые могут вызвать исключение.

Один или несколько блоков catch непосредственно за блоком try.Каждый блок catch указывает тип исключения он может обработать.

следующий синтаксис показывает пример try блок и его обработчики.Предположим, что GetNetworkResource() получает данные по сети и подключение, 2 типа исключения, определяемые пользователем, наследуйте классы от классов std:: исключение Обратите внимание, что исключения передаются по ссылке при выписке catch:

MyData md;
try {
   // code that could throw an exception
   md = GetNetworkResource();
}
catch (networkIOException& e) {
   // code that executes when an exception of type
  // networkIOException is thrown in the try block
//…
// Log error message in the exception object.
   cerr << e.what();
}
catch (myDataFormatException& e) {
   // code that handles another exception type
//…
 cerr << e.what();

}

// The following syntax shows a throw expression:

MyData GetNetworkResource()
{
    //...
    if(IOSuccess == false)
        throw networkIOException("Unable to connect");
    //...
    if(readError)
        throw myDataFormatException("Format error"); 
    // ...
}

Заметки

Код после try предложение защищенный раздел Кода.Выражение хода вызывает () вызывает исключение.блок Кода после catch предложение обработчик исключений (маркеры), и перехватывает исключение, если тип штриховой выражением хода выполнения совместим в выражениях и catch.Список правил, которые управляют тип-соответствовать в блоках catch см. в разделе ___.Если оператор catch определяет многоточие (...), а не тип catch отключение маркеры любой тип исключения (включая исключения c# и система или приложение-произведенные исключения, как защита памяти, деление на нуль и нарушения плавающей запятой.Поскольку блоки catch опробованы в порядке программы, такой обработчик должен быть последним обработчиком для своего try блок.используйте задвижку (…) с осторожностью. обычно такой блок catch используемый для записи ошибки в журнал и выполнять всю необходимую очистку специальную до остановки выполнения программы.Не следует разрешать программа чтобы продолжить, если блок catch не будет уметь, как обрабатывать определенное исключение, перехватывается.

A ход-выражение без re-ходов операнда исключение в настоящее время обработки.Такое выражение должно появляться только в выражении catch обработчик или в функции вызываемой из a catch обработчик.Re-брошенный объект исключения и исходный объект исключения (cc).Примеры.

try {
   throw CSomeOtherException();
}
catch(...) {  // Catch all exceptions – dangerous!!!
   // Respond (perhaps only partially) to exception
   throw;       // Pass exception to some other handler
}

См. также

Ссылки

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

Ключевые слова C++

Необработанных исключений C++

__uncaught_exception

Другие ресурсы

Практическое руководство. Обработка исключений в конструкторах базового класса (C++)