На основі вивчених прикладів обробки винятків, інтегруйте користувацькі винятки у ваш існуючий код класів Student та Group. Фокус на створенні та використанні ієрархії винятків для обробки помилкових ситуацій у методах, пов'язаних з оцінками, додаванням/редагуванням студентів та управлінням групою.
Частина 1: Створення ієрархії користувацьких винятків Створіть ієрархію користувацьких винятків на основі ApplicationException, подібно до прикладів з JobImpossible. Використовуйте геттери та сеттери для додаткових даних у винятках. Обов'язкові винятки (з двома базовими класами та по три нащадки для кожного):
Винятки для студента (базовий: StudentManagementException):
- StudentManagementException - базовий для помилок студента.
- InvalidGradeException - невалідна оцінка.
- StudentNotFoundException - студент не знайдений.
- InvalidStudentDataException - невалідні дані студента.
Винятки для групи (базовий: GroupManagementException):
- GroupManagementException - базовий для помилок групи.
- GroupFullException - група переповнена.
- InvalidGroupDataException - невалідні дані групи.
- TransferFailedException - помилка переведення.
Використовуйте ваш існуючий код Student та Group. Додайте обробку винятків у ключові методи, де можливі помилки. Обов'язково використовуйте try-catch-finally для логування помилок (виводьте повідомлення в консоль, наприклад, "сталася помилка: [деталі]").