Как работает javascript try ... catch - PullRequest
6 голосов
/ 14 августа 2010

Я пытаюсь проверить в браузере, работает ли определенное поле ввода или нет. Я пытаюсь использовать оператор try ... catch, который раньше никогда не использовал. Я знаю, что форма:

try {
//some code
} catch (){
//some error code
};

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

Ответы [ 5 ]

10 голосов
/ 14 августа 2010

См. Руководство «try...catch оператор» в MDN .

Короче говоря, try / catch используется для обработки исключений (которые «выбрасываются» с помощью оператора throw).Синтаксис для try / catch:

try {
    // Code
} catch (varName) {              // Optional
    // If exception thrown in try block,
    // execute this block
} finally {                      // Optional
    // Execute this block after
    // try or after catch clause
    // (i.e. this is *always* called)
}

varName доступен только для области catch.Он ссылается на объект исключения, который был брошен (который может быть объектом любого типа, например String, но обычно это Error объект ).

4 голосов
/ 14 августа 2010

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

Вы получили почти правильное утверждение:

try {
 // code that may fail with error/exception
} catch (e) { // e represents the exception/error object
 // react
}

Рассмотрите следующие примеры:

try {
  var x = parseInt("xxx");
  if(isNaN(x)){
    throw new Error("Not a number");
  }
} catch (e) { // e represents the exception/error object
 alert(e);
}

try {
 // some code
 if(!condition){
   throw new Error("Something went wrong!");
 }
} catch (e) { // e represents the exception/error object
 alert(e);
}
2 голосов
/ 24 июня 2013

Согласно спецификации ECMAScript,

try {
    // Code
} catch (varName) {  // optional if 'finally' block is present.
  if (condition) {   // eg. (varName instanceof URIError)
    // Condition (Type) specific error handling
  }
  else {
    // Generic error handling
  }
} finally {          // Optional if 'catch' block is present.
    // Execute this block after
    // try or after catch clause
    // (i.e. this is *always* called)
}
2 голосов
/ 14 августа 2010

материал внутри try {...} - это то, что вы хотите выполнить. Материал в catch () {...} - это то, что вы хотите выполнить, если вы получаете какие-либо ошибки JavaScript из чего-либо, выполненного в попытке {...}

catch {...} выполняется только в случае ошибки javascript в блоке try {...}. Вы можете узнать, в чем заключается ошибка, например, так:

try {
 // do something 
} catch (err) {
  alert(err);
}
0 голосов
/ 14 августа 2010

код, который может вызвать исключение, входит в try { }, код, который запускается при возникновении исключения, входит в catch() { }.В catch () вы можете указать, какие исключения вы хотите перехватить, и в какие автоматические переменные их поместить.finally { } всегда выполняется независимо от того, было ли сгенерировано исключение или нет.

...