Часть 1. Написание собственного фреймворка

Класс обработки ошибок