Доброе время суток!
В ходе разработки некоторой библиотеки возник вопрос каким образом нужно обрабатывать ошибки времени исполнения. Как я понимаю, все ошибки данного типа можно разделить на 2 больших группы:
1. ошибки, возникающие по не зависящим от программы обстоятельствам;
2. ошибки, являющиеся следствием некорректной работы самой программы.
С первой группой ошибок все понятно : функция, в которой возможно возникновение такой ошибки, сообщает о результате операции с помошью возвращаемого значения.
Со второй группой ошибок все намного сложнее и вопрос связан именно с ней. Ошибки этой группы связаны с некорректностью переданных функции аргументов (например, вместо указателя на строку передается NULL). Внимание вопрос: что делать в случае возникновения такой ошибки? Вот какие варианты я нашел в реальных библиотеках:
1. Входные параметры не контролируются. Программа сама завершиться по причине Segmentation Failed (ex.: memcpy() в glibc).
2. Функция, обнаружившая некорректность входных аргументов, выводит в журнал сообщение об ошибки и завершает исполнение программы. (ex.: g_error() в glib).
3. Промежуточный вариант: если функция обнаружила некорректность переданных аргументов, то она не выполняет никаких действий, а выполняет return. Также может происходить запись в журнал (stderror). (ex.: linux kernel).
На чём остановиться, господа?
Ответ на:
комментарий
от cvv
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум обработка ошибок (2005)
- Форум Про обработку ошибок (2013)
- Форум стиль обработки ошибок (2012)
- Форум [C] Обработка ошибок (2009)
- Форум Обработка ошибок PHP (2010)
- Форум CL и обработка ошибок (2012)
- Форум [perl][dbus]Обработка ошибок (2011)
- Форум Обработка ошибок и логирование (2010)
- Форум [qt] каноническая обработка ошибок (2011)
- Форум Go и обработка ошибок (2015)