Блок Try-catch, где управление исключениями может привести к ошибкеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Блок Try-catch, где управление исключениями может привести к ошибке

Сообщение Anonymous »

У меня есть класс School, который включает в себя деревья avl: одно для учащихся, другое для пустых классов и третье для непустых классов.
Функция, с которой я борюсь, выглядит так: ( — это перечисление, такое, что 0=succes,1=allocation_error,3=failure,4=invalid=input):

Код: Выделить всё

Status leave_class(int studentId){
//check validity of input
try{
if(numStudents==1){
#remove class from nonEmptyClasses
#add class to emptyClasses
}
Class->removeStudent(studentId)
}
catch(...){
Return status::allocation_error
}
Students->leave() //this line changes student fields to ints of 0 and nullptr for pointers
Return status::successs
}
3 действия в блоке try могут вызывать исключения/ошибки, но затем в блоке catch, если я попытаюсь отменить произошедшую ошибку, произойдет реверсирование процесс также может быть подвержен тем же ошибкам.
Например, если мне удалось удалить класс из nonEmptyClasses и не удалось добавить его в пустые классы, Мне нужно отменить удаление, что также может привести к ошибка.
Я думал о том, чтобы разделить действия на несколько функций или использовать несколько блоков try, но все время возвращаюсь к исходной точке 1.
Есть какие-нибудь рекомендации?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ause-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»