try...catch 语句有什么作用?
try...catch
可以测试代码中的错误。try
部分包含需要运行的代码,而 catch
部分包含错误发生时运行的代码。
try...catch语法
try {
//在此运行代码
}
catch(err){
//在此处理错误
}
运行流程:
try{...}
包含块中的代码有错误,则运行 catch(err){...}
内的代码, 否则不运行 catch(err){...}
内的代码。
try...catch案例
var array = null;
try {
document.write(array[0]);
} catch(err) {
document.writeln("Error name: " + err.name + "");
document.writeln("Error message: " + err.message);
}
try...catch...finally 语句
提供了一种方法来处理可能发生在给定代码块中的某些或全部错误,同时仍保持代码的运行。如果发生了程序员没有处理的错误,JS只给用户提供它的普通错误信息,就好象没有错误处理一样。
try...catch...finally 语法
try {
tryStatements
}
catch(exception){
catchStatements
}
finally {
finallyStatements
}
参数
- tryStatement:必选项。可能发生错误的语句。
- exception:必选项。任何变量名。
exception
的初始化值是扔出的错误的值。 - catchStatement:可选项。处理在相关联的
tryStatement
中发生的错误的语句。 - finallyStatements:可选项。在所有其他过程发生之后无条件执行的语句。
try...catch...finally 案例
var array = null;
try {
document.write(array[0]);
} catch(err) {
document.writeln("Error name: " + err.name + "");
document.writeln("Error message: " + err.message);
}
finally{
alert("object is null");
}
程序执行过程
array[0]
的时候由于没有创建array
数组,array
是个空对象,程序中调用array[0]
就会产生object is null
的异常。catch(err)
语句捕获到这个异常,通过err.name
打印了错误类型,err.message
打印了错误的详细信息。finally
类似于 Java 的finally
,无论有无异常都会执行。
现总结 Error.name 的六种值对应的信息:
- EvalError:eval()的使用与定义不一致
- RangeError:数值越界
- ReferenceError:非法或不能识别的引用数值
- SyntaxError:发生语法解析错误
- TypeError:操作数类型错误
- URIError:URI处理函数使用不当
评论区