Когда вы должны использовать try / catch в JavaScript? - PullRequest
29 голосов
/ 22 августа 2011

Когда я разрабатываю обычное веб-приложение на JavaScript, оператор try/catch обычно не нужен.Нет проверенного исключения , File IO или соединения с базой данных в JavaScript.

Является ли оператор try/catch полезным в JavaScript?Когда я могу использовать это?

Ответы [ 6 ]

31 голосов
/ 22 августа 2011
Блоки

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

Основной причиной этого является стоимость catch блоков. Еще одна причина заключается в том, что когда вы заключаете много операторов в один блок try...catch, в блоке catch вы не можете быть уверены, в чем именно заключается основная проблема.

Лучше использовать такие методы, как проверка входных данных или блоки if...else, чтобы уменьшить вероятность возникновения исключения (ошибки). Например, если вы хотите работать с номером, который взят у пользователя, вместо использования try...catch, вы можете использовать:

if (isNaN(numberVariable))
{
    alert('you should enter a valid number');
}
26 голосов
/ 03 октября 2014

Один сценарий, который я нахожу полезным использовать метод try / catch / finally, связан с глубоко вложенными объектами, в которых значение null может появиться на любом уровне.например, рассмотрим следующее:

var something = one.two.three.four.five;

, чтобы выполнить это «get» со 100% безопасностью, нужно было бы написать немного подробного кода:

if(one && one.two && one.two.three && one.two.three.four)
   something = one.two.three.four.five;

Теперь представьте имена переменныхреалистичны и длиннее, и вы быстро получите очень некрасивый код ifили нет:

var something;
try { something = one.two.three.four.five; }
catch { something = "default"; }
finally { doSomething(something); }
23 голосов
/ 29 декабря 2014

Я нашел это из сообщения здесь :

Когда вы должны использовать try-catch?

Theоператор try-catch следует использовать в любое время, когда вы хотите скрыть ошибки от пользователя, или в любое время, когда вы хотите создавать пользовательские ошибки в интересах своих пользователей.Если вы еще не поняли это, при выполнении оператора try-catch обычный браузерный механизм обработки ошибок будет отключен.

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

Другое преимущество, предоставляемое оператором try-catch, заключается в том, что он скрывает слишкомсообщения о технических ошибках от пользователей, которые их не поймут.

Лучшее время для использования try-catch - это фрагменты кода, в которых, как вы подозреваете, будут возникать ошибки, не зависящие от вас по каким-либо причинам.

Когда следует избегать try-catch?

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

11 голосов
/ 22 августа 2011

Используйте его всякий раз, когда выполняемый код может вызвать исключение.Помните, что вы можете throw свои собственные ошибки - большая часть try…catch материала, который я использую, предназначена для ловли моих собственных исключений.

4 голосов
/ 22 августа 2011

Внешние библиотеки Javascript и виджеты часто используют исключения для ошибок создания экземпляров.Обычно требуется:

try {
  var w = new Widget();
}
catch (e) {
  // widget failed
}
1 голос
/ 22 августа 2011

Что ж, я лично (не так?) Использую его, когда пишу какой-то код, который, я не уверен, будет работать правильно, но пользователю не нужно знать об ошибке.

Кроме того, я использовал его на некоторых пользовательских элементах управления, для которых вы можете определить свойство 'action' в вашей HTML-разметке, и javascript попытается выполнить это действие, например так:

try{
     window['method'](args);
}catch(e){
     try{
         window['optionalExceptionHandler'](e, args);
     }catch(e){ return; }
}

(мне нравится думать, что это лучше, чем eval() xD)

...