Потоки, как правило, не генерируют исключения, когда они не работают, поэтому я не ожидаю, что ваше сообщение об ошибке будет напечатано независимо от того, прошла ваша операция успешно или нет.
Базовый класс ios
имеет функцию под названием exceptions
, которую можно использовать для управления этим, но довольно антисоциально писать функцию, которая изменяет состояние аргумента, как этот, поэтому вам, возможно, придется обязательно восстановите его (даже если оно выдает исключение ...)
Обычный способ проверить успешность операции в потоке - это if
. Поток оценивается как истинное значение, если все в порядке, в противном случае - ложное значение, под которым я подразумеваю значение истинное / ложное, что касается условных выражений, а не bool
значения true
или false
.
Точнее, неверно, если установлен failbit или badbit. Последняя операция «не работала» тогда и только тогда, когда установлена хотя бы одна из них.