2010-04-18 2 views
1

Я пишу код Erlang, и я очень не уверен, что я должен позволить, чтобы все не быстро. Одна из проблем, которые я нахожу с ошибкой, - это то, что для разработчика/пользователя генерируемое исключение довольно бессмысленно. Любая идея, что я должен вернуть, которая не даст эзотерических и трудночитаемых следов стека?Возврат кода ошибки в Erlang

ответ

2

Я бы порекомендовал вам войти в систему с помощью error_logger (3) и попросить разработчика посмотреть, что на самом деле происходит за кулисами. Рекомендуется выполнить OTP principles, чтобы собрать все данные, возвращаемые VM при сбоях процесса.

+0

error_logger выглядит хорошо. Так что я должен назвать это с места, выбрасывающего исключение или место, где его ловят? И разве это не испортило код? – Zubair

+0

Вам не нужно ничего звонить. На самом деле это не нужно делать, поскольку вы устанавливаете обработчик регистратора при запуске своей программы. –

+0

На http://spawnlink.com/ есть хорошие статьи, в которых также есть пример использования таких обработчиков. –

1

Я бы посоветовал быстро провалиться и научиться читать следы стека.

+0

Означает ли это, что все сотрудники службы поддержки, которые должны следить за системой, должны научиться читать сообщения об ошибках Erlang? – Zubair

+0

Конечно, всем, чья задача заключается в диагностике или устранении проблем, необходимо изучить необходимые инструменты для этого. Это означает, что трассы erlang, трассировки Python, C core дампы, следы Java или различные уровни детализации знаний. Вероятно, вам нужны несколько специалистов для конкретных технологий и многие обобщающие, которые знают основы и могут перенаправить соответствующие специалисты. – ndim

+0

Хорошо, спасибо. Я не понимал, что это часть поддержки людей. Я дам им знать. Я знаю, что они не будут счастливы, хотя, но это лучше для меня, так как в настоящее время они всегда приходят ко мне, когда происходит ошибка производства (около 20 раз в день). – Zubair

1

Основной принцип в Erlang является:

Сделать это крах!

Я нашел весьма полезным избежать так называемого защитного программирования. Понятие объясняется в немного более подробно на странице Правила программирования Erlang:

http://www.erlang.se/doc/programming_rules.shtml#HDR11

Кроме того, даже если некоторые из ошибок Эрланга может быть немного загадочным, хороший способ справиться с это след их! Трассировка в Эрланге довольно проста. Посмотрите на этот краткий справочник:

http://aloiroberto.wordpress.com/2009/02/23/tracing-erlang-functions/

или просто обратитесь к официальной документации.

1

Поскольку Erlang является функциональным языком, ошибки часто бывают легко выявлены, если вы склонны писать Pure functions, потому что чистая функция с заданными аргументами всегда возвращает тот же результат. Таким образом, имея трассировку стека, как только вы обнаружили неудачную функцию, вы можете выяснить, что вызвало ошибку. Противоположный императивному программированию вам не нужно тратить много времени на отладку кода, часто вам даже не нужен отладчик, и поиск ошибки превращается в интересную игру. This статья полезна.

Смежные вопросы