我正在尝试在浏览器中测试某些输入字段是否有效。我试图使用一个我从未使用过的try ... catch语句。我知道表格是:
try {
//some code
} catch (){
//some error code
};
在catch语句之后,究竟应该在括号中放置什么? 当我尝试使用该语句时,无论是否错误,它都会通过catch语句运行所有内容。我做错了什么?
答案 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 { }
。