Использование try-catch внутри конструктора может считаться плохой практикой по нескольким причинам:
- Сложность очистки. study.sfu-kras.ru Конструктор переводит объект в безопасное начальное состояние, но может выполнять операции, которые не будут очищены, пока пользователь не закончит работать с объектом и не вызовет специальный очищающий метод. study.sfu-kras.ru Если из конструктора выбросить исключение, очищающее поведение может не сработать. study.sfu-kras.ru
- Трудность обработки. habr.com При росте программы количество выбрасываемых исключений увеличивается, и становится сложно их все обработать. habr.com Особенно сложно обрабатывать методы, которые могут выбросить исключения разных типов. habr.com
- Сложность написания кода. study.sfu-kras.ru Обработчик часто должен знать, где брошено исключение, и содержать специфический код для места выброса. study.sfu-kras.ru Это делает код трудным для написания и ухода, особенно для больших систем. study.sfu-kras.ru
Однако есть мнение, что нет ничего плохого в том, чтобы создавать исключение в конструкторе, и важно обрабатывать только те исключения, после которых можно восстановиться. stackoverflow.com