2013-04-10 2 views
2

Читаю об ошибке обработки в nodejs, и я наткнулся на что-то тревожное, читая этот документ:Выбрасывает исключение в javascript/nodejs действительно так плохо?

http://nodejs.org/api/domain.html

Он говорит: «По самой природе, как бросить работы в JavaScript, там почти никогда любой способ безопасно «подобрать то, где вы остановились», без утечки ссылок или создания какого-то другого неопределенного хрупкого состояния ».

Звучит ужасно ужасно. Действительно ли это говорит о том, что в любое время, когда возникает исключение, мне нужно отключить поток? Я чувствую, что здесь что-то не хватает.

+0

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

+1

Возможный дубликат [Почему исключение вызывает утечку ресурсов в Node.js?] (Http://stackoverflow.com/questions/15825752/why-would-an-exception-cause-resource-leaks-in-node-js) –

+0

Действительно, спасибо Асаду. Что мне делать с этим вопросом, так как это дубликат? –

ответ

2

Нет ничего плохого в том, чтобы бросать исключения в правильных обстоятельствах. Это полезный инструмент и может использоваться как таковой. Исключения, как правило, не являются правильным инструментом для обычных, ожидаемых, часто используемых кодов кода, потому что они медленные, гораздо медленнее, чем обычные возвращаемые значения. Обычно лучше использовать возвращаемые значения для тех типов обстоятельств, если для вас важна производительность.

Но исключения могут значительно упростить ваш код для непредвиденных условий ошибки или ненормальных условий, а в управляемом памятье, таком как javascript, вам вообще не нужно беспокоиться об утечке памяти при бросании исключения, кроме случаев, когда вы в середине манипулирования постоянным глобальным состоянием, когда вы бросаете исключение. Все локальные переменные и их ссылки очищаются для вас, когда возникает исключение, когда они выходят за рамки.

Исключения не приводят к утечкам памяти или хрупкому состоянию, если ваш код плохо написан, что является одним и тем же для любого другого способа указания условия ошибки.

+0

«Утечка ссылок» - это не то же самое, что «утечка памяти». –

+0

@Asad - что такое «утечка ссылок»? – jfriend00

+0

Считаю, что перенос переменных в область, из которой они не были предназначены, из-за чего они не были доступны. –

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