c++, try/catch/throw
Пытаюсь разобраться с исключениями. Почему выдает черный экран вместо сообщения: ""Деление на 0 невозможно"?
#include
using namespace std;
int main()
{
int a=4;
int b=0;
int s;
try { s=a/b; cout
Пытаюсь разобраться с исключениями. Почему выдает черный экран вместо сообщения: ""Деление на 0 невозможно"?
#include
using namespace std;
int main()
{
int a=4;
int b=0;
int s;
try { s=a/b; cout
Деление на 0 — это undefined behavior, а не исключительная ситуация. Его нельзя обработать, его можно только предотвратить.
Поэтому лучше всего, проверить if-ом что у вас хранится в b:
if (0 == b) throw std::domain_error("Деление на 0 невозможно");
Что касается исключений:
После блока try можно писать несколько блоков catch.
В catch в скруглых скобках пишется тип возникающей ошибки. Компилятор ищет первый подходящий catch и выполняет код описаный в этом блоке.
если указать в блоке catch в круглых скобках троеточие:
catch (...) {cout