вижу. И это компилируется и работает.
int foo(int x)
try {
std::cout << x << '\n';
}
catch (...) {
std::cout << "catched\n";
}
int main() {
foo(15);
}
Какой такой? Try-catch? (И правильно будет не catched, а caught)
https://en.cppreference.com/w/cpp/language/function-try-block
а что не так?
А что, при отправке в cout инта может вылететь эксепшн?
При работе с потоком ввода вывода может вылететь, если не удаётся туда записать. Тип не важен. Это к operator<< относится
#include <iostream> void foo(const int& x) { try { std::cout << x << std::endl; } catch (...) { std::cerr << "Catched\n"; throw; } } int main(){ std::cout.exceptions(std::cout.badbit); foo(15); return 0; } ~$ sh -c 'trap "" PIPE; ./cout | true' Catched terminate called after throwing an instance of 'std::__ios_failure' what(): basic_ios::clear: iostream error Aborted
А в чем проблема?
ну если не включать отдельно - не будет
ни в чем
Обсуждают сегодня