js中try、catch、finally的执行规则:
首先一个常识,在浏览器执行JS脚本过程中,当出现脚本错误,并且你没有手动进行异常捕捉时,他会在浏览器下面出现黄色的叹号,这是正常的,这也不是最重要的,最重要的是,出错行以下的所有JS代码将中停执行,这是我们不希望看到的,所以说,对于自己写的,拿不准的脚本还是加上异常捕捉比较好。
try: 测试代码块的错误,一般把可能会出错的代码放到这里
catch:捕获处理抛出的错误。 只有try里面的代码块发生错误时,才会执行这里的代码,参数err记录着try里面代码的错误信息
finally: 在 try 和 catch 之后,无论是否有触发异常,该语句都会执行。
throw: 创建或抛出自定义错误(异常)。
try catch缺点:
1.try catch耗性能
2.try catch捕获不到异步错误
3.try catch可能会导致报错点更模糊
例子:
<p>不管输入是否正确,输入框都会再输入后清空。</p>
<p>请输出一个 5 到 10 之间的数字:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">测试输入</button>
<p id="message"></p>
function myFunction () {
var inpVal, message
inpVal = document.getElementById("demo").value
message = document.getElementById("message")
try {
if (inpVal == "") throw "值为空"
if (isNaN(inpVal)) throw "值不是一个数字"
inpVal = Number(inpVal)
if (inpVal > 10) throw "太大"
if (inpVal < 5) throw "太小"
} catch (err) {
message.innerHTML = "错误:" + err
} finally {
document.getElementById("demo").value = ""
}
}