如何javascript尝试... catch语句工作

时间:2010-08-14 17:55:12

标签: javascript try-catch

我正在尝试在浏览器中测试某些输入字段是否有效。我试图使用一个我从未使用过的try ... catch语句。我知道表格是:

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

在catch语句之后,究竟应该在括号中放置什么? 当我尝试使用该语句时,无论是否错误,它都会通过catch语句运行所有内容。我做错了什么?

5 个答案:

答案 0 :(得分:10)

请参阅try...catch statement” guide on 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 object)。

答案 1 :(得分:4)

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 :(得分:2)

try {...}里面的东西就是你想要执行的东西。 catch(){...}中的内容是你想要执行的,如果你从try {...}中执行的任何内容中得到任何javascript错误

catch {...}仅在try {...}块中出现javascript错误时执行。您可以通过以下方式找出错误:

try {
 // do something 
} catch (err) {
  alert(err);
}

答案 3 :(得分:2)

根据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)
}

答案 4 :(得分:0)

可能引发异常的代码进入try { },抛出异常时要运行的代码进入catch() { }。在catch()中,您可以指定要捕获的异常以及放置它的自动变量。 无论是否抛出异常,都始终运行finally { }