api design: return code or exception - formal criteria
От: Andrew S Россия http://alchemy-lab.com
Дата: 27.08.09 12:14
Оценка:
Всем привет.

Ситуация следующая — разрабатывается небольшой слой кросс-платформенной абстракции (io, sync, mt etc). В который раз возник вопрос, что в каких ситуациях использовать — исключения и коды возврата ошибок.
Есть ли какие-то формальные критерии, по которым можно решить что в данном случае использовать коды возврата ошибки, в данном — исключения.
Например, взять файловые операции. Тут довольно тонкая ситуация — в некоторых случаях важно ошибки обрабатывать прямо рядом с вызовом, в некоторых — не нужно. Хочется иметь какие-то формальные рекомендации, по которым в большинстве случаев можно было бы принимать подобное решение. "Посмотреть как у других" в данном случае не подходит — просто потому, что у других по-разному.

Рассмотрим, например, ситуацию — критическая секция в терминах win32 и именованный мьютекс. С критической секцией вроде без вариантов — там только исключения, тем более, что бросать она их может только в одном редком кейсе, см msdn. Должен ли мьютекс по аналогии бросать эксепшены (читай, инициализироваться в конструкторе), или же иметь методы Create/Open/Close. Как тогда быть с операциями типа wait, которы могут возвращать довольно много различных кодов, часть из которых обычно анализируется сразу рядом, часть — вызывается необратимые последствия...

Если есть ссылки критерии, best practice или что-нибудь подобное — будет супер.

Спасибо!

PS Свое мнение по данному вопросу у меня имеется В данном случае нужны именно формальные критерии, чтобы каждый конкретный случае не вызывал одинаковых вопросов.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.