Ответ 1
Используйте его, когда выполняемый код может вызвать исключение. Помните, что вы можете throw
свои собственные ошибки - большая часть материала try…catch
, который я использую, предназначена для обнаружения моих собственных исключений.
Когда я разрабатываю нормальное веб-приложение с JavaScript, инструкция try/catch
обычно не требуется. Там нет проверено исключение, File IO или соединение с базой данных в JavaScript.
Оператор try/catch
полезен в JavaScript? Когда я могу его использовать?
Используйте его, когда выполняемый код может вызвать исключение. Помните, что вы можете throw
свои собственные ошибки - большая часть материала try…catch
, который я использую, предназначена для обнаружения моих собственных исключений.
try...catch
блоки обычно поощряются к использованию меньше, и это не зависит от используемого вами языка.
Основной причиной этого является стоимость блоков catch
. Другая причина заключается в том, что когда вы завершаете несколько операторов одним блоком try...catch
, в блоке catch
вы не можете быть уверены в том, что является главной проблемой.
Лучше использовать такие методы, как validation
или if...else
, чтобы уменьшить вероятность возникновения ошибки (ошибки). Например, если вы хотите работать с числом, которое берется у пользователя, вместо использования try...catch
вы можете использовать:
if (isNaN(numberVariable))
{
alert('you should enter a valid number');
}
Я нашел это из сообщения здесь:
Когда вы должны использовать try-catch?
Оператор try-catch следует использовать в любое время, когда вы хотите скрыть ошибки от пользователя, или в любое время, когда вы хотите создать пользовательские ошибки для своих пользователей. Если вы еще не поняли это, когда вы выполняете инструкцию try-catch, обычный механизм обработки ошибок браузеров будет отключен.
Вероятно, вы можете увидеть возможные преимущества при создании больших приложений. Отладка всех возможных обстоятельств в любом потоке приложений часто занимает много времени, и многие возможности могут быть непреднамеренно упущены. Конечно, при правильном тестировании ошибок ни одна область не должна быть упущена. Но выражение try-catch работает как хороший резерв в областях вашего кода, который может выйти из строя при необычных обстоятельствах, которые не были предусмотрены во время разработки.
Другим преимуществом, предоставляемым приложением try-catch, является то, что он скрывает чрезмерно технические сообщения об ошибках от пользователей, которые вообще не понимают их.
Лучшее время для использования try-catch - это части вашего кода, в которых вы подозреваете, что произойдут ошибки, которые не под вашим контролем, по каким-либо причинам.
Когда следует избегать попытки улова?
Вы не должны использовать оператор try-catch, если знаете, что произойдет ошибка, потому что в этом случае вы захотите отладить проблему, а не замаскировать ее. Оператор try-catch должен выполняться только в разделах кода, в которых вы подозреваете, что могут произойти ошибки, и из-за огромного количества возможных обстоятельств вы не можете полностью проверить, произойдет ли ошибка или когда это будет сделано. В последнем случае было бы целесообразно использовать try-catch.
Один из сценариев, которые я нахожу try/catch/finally, полезен с глубоко вложенными объектами, где нулевой может появиться на любом уровне. например, рассмотрим следующее:
var something = one.two.three.four.five;
для выполнения этого "получения" со 100% -ной безопасностью нужно было бы написать немного подробного кода:
if(one && one.two && one.two.three && one.two.three.four)
something = one.two.three.four.five;
Теперь представьте, что имена переменных реалистичны и длиннее, и вы быстро получаете очень уродливый код if.
Я стараюсь использовать try/catch/finally, чтобы упростить это, когда меня не интересуют сценарии "else" и просто хотят объект или нет:
var something;
try { something = one.two.three.four.five; }
catch { something = "default"; }
finally { doSomething(something); }
Внешние библиотеки и виджеты Javascript часто используют исключения для ошибок при создании. Обычно необходимо:
try {
var w = new Widget();
}
catch (e) {
// widget failed
}
Ну, я лично (неправильно?) его использую, когда я пишу код, который я не уверен, будет выполняться правильно, но пользователю не нужно знать об ошибке.
Кроме того, я использовал его для некоторых пользовательских элементов управления, для которых вы можете определить свойство action в своей разметке HTML, и javascript попытается выполнить это действие, например:
try{
window['method'](args);
}catch(e){
try{
window['optionalExceptionHandler'](e, args);
}catch(e){ return; }
}
(Мне нравится думать лучше, чем eval()
xD)