从Javascript3.0中添加了异常处理机制,可以采用从java语言中移植过来的模型使用try--catch--finally语句进行异常的处理。
其中包括(try...catch...finally语句)、Error对象、使用throw语句抛出异常等
使用try...catch...finally语句抛出异常
正确代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>try_catch</title>
</head>
<body>
<script>
var str = 'i like Javascript'
try{
//在页面上输出字符串中的下标为5的字符。
document.write(str.charAt(5)) //执行成功,在页面输出字符串第5位的内容,然后执行finally中的语句
}catch(exception){
//当有错误发生时,弹窗输出下列语句
alert('运行时有异常发生')
//TODO handle the exception
}finally{
alert('结束try...catch...finally语句')
}
</script>
</body>
</html>
抛出异常代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>try_catch</title>
</head>
<body>
<script>
var str = 'i like Javascript'
try{
//在页面上输出字符串中的下标为5的字符。
document.write(str.charat(5)) //字符串的函数名书写错误,发生异常,执行catch中的语句
}catch(exception){
//当有错误发生时,弹窗输出下列语句
alert('运行时有异常发生')
//TODO handle the exception
}finally{
alert('结束try...catch...finally语句')
}
</script>
</body>
</html>
image.png
分析可知,当try语句块中包含的语句出现错误的时候,跳出try语句执行catch语句块中的内容,然后如果存在finally语句块,则最后执行finally语句块中的内容。
Error对象
try...catch...finally语句中的catch通常捕捉到的对象为Error对象,当运行JavaScript代码时,如果产生了错误或者异常,JavaScript就会生成一个Error对象的实例来描述错误。该实例包含了一些特定的错误信息。
Error对象有以下两个属性。
name:表示异常类型的字符串
message:实际的错误信息
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>try_catch</title>
</head>
<body>
<script>
var str = 'i like Javascript'
try{
//在页面上输出字符串中的下标为5的字符。
document.write(str.charat(5)) //字符串的函数名书写错误,发生异常,执行catch中的语句
// document.write(str.charAt(5)) //执行成功,在页面输出字符串第5位的内容,然后执行finally中的语句
}catch(exception){
//当有错误发生时,弹窗输出下列语句
alert('实际的错误信息为:'+exception.message + '\n错误类型为'+exception.name)
//TODO handle the exception
}finally{
alert('结束try...catch...finally语句')
}
</script>
</body>
</html>
image.png
使用throw语句抛出异常
有些JavaScript代码并没有语法上的错误,但是又逻辑错误,对于这种错误,JavaScript不会抛出异常,这时候需要我们自己定义一个Error对象的实例,并使用throw语句来抛出异常。在程序中我们可以通过使用throw语句有目的的抛出异常,其语法格式如下。
throw new Error('somestatements')
参数说明:
throw:抛出异常关键字
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>try_catch</title>
</head>
<body>
<script>
var str = 'i like Javascript'
try{
var num = 1/0;
if (num == 'Infinity'){
throw new Error('除数不可以为0')
}
}catch(exception){
//当有错误发生时,弹窗输出下列语句
alert('实际的错误信息为:'+exception.message + '\n错误类型为'+exception.name)
//TODO handle the exception
}finally{
alert('结束try...catch...finally语句')
}
</script>
</body>
</html>
image.png
原文链接:https://blog.csdn.net/qq_32670879/article/details/82530164
网友评论