В ожидании День программиста и по следам День тестировщика Я хочу поговорить о том, как упростить им обоим жизнь в их общей задаче — разработке и отладке программного обеспечения.
А именно, я расскажу вам, как сделать исключения C++ более информативными, а протоколирование ошибок более компактным.
За полтора года работы с Java я привык к исключениям, содержащим StackTrace типа
Перейдя на C++, через некоторое время меня поразило отсутствие информации об исключениях с точки зрения выявления причин ошибки и дальнейшей отладки.Exception in thread "main" java.lang.IllegalStateException: A book has a null property at com.example.myproject.Author.getBookIds(Author.java:38) at com.example.myproject.Bootstrap.main(Bootstrap.java:14) Caused by: java.lang.NullPointerException at com.example.myproject.Book.getId(Book.java:22) at com.example.myproject.Author.getBookIds(Author.java:35) .1 more
Мне пришлось логировать прохождение всех важных пунктов программы, чтобы по логам понять, где именно что-то пошло не так и привело к исключению.
Далее я представлю упрощенную эволюцию ведения журналов, которую я прошел сам.
Оригинальная программа, которую мы будем отлаживать и улучшать void foo(int a)
{
Теги: #ведение журнала c++ #деструктор #исключения #c++ #logger #исключения #деструкторы #программирование #C++ #OOP
-
Особенности Ноутбуков Dell
19 Oct, 24 -
Конференция Hdconf: Фото-Видео-Слайд-Отчет
19 Oct, 24 -
Пойдешь Ли Ты В Риф+Киб?
19 Oct, 24