Js错误处理机制

326 阅读2分钟
一. try-catch 语句

1.将可能会抛出错误的代码都放在try语句块中,而把那些用于错误处理的代码放在catch块中。


try {
//可能会导致错误的代码
someFunction();
} catch (error) {
//在错误发生时怎么处理
alert(error.message)
}

2. finally字句

虽然finally字句是可选的,但是一经使用,其代码无论如何都会执行。


function testFinally () {
  try {
       return 2;
  } catch (error) {
      return 1;
  } finally {
      return 0;
  }
}

注:只要代码中包含finally字句,那么无论try还是catch语句块中的return语句都将被忽略。

使用要点:

  • 使用try包裹的代码,即使不出错,效率也比不用try包裹的代码低;
  • 在try中,尽量少的包含可能出错的代码;
  • 无法提前预知错误类型的错误,必须用try catch捕获;
  • finally可以省略;

二.error实例对象

任何没有通过try-catch处理的错误都会触发window对象error事件。


window.onerror = function (message, url, line) {
   alert(message);
}

六种错误:

  • ReferenceError:找不到对象时
  • TypeError:错误的使用了类型或对象的方法时
  • RangeError:使用内置对象的方法时,参数超范围
  • SyntaxError:语法写错了
  • EvalError:错误的使用了Eval
  • URIError:URI错误
三.Throw语句

throw 语句允许我们创建自定义错误。
正确的技术术语是:创建或抛出异常(exception)。
如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。


throw exception

异常可以是 JavaScript 字符串、数字、逻辑值或对象。


<!DOCTYPE html>
<html>
<body>

<script>
function myFunction()
{
try
{ 
var x=document.getElementById("demo").value;
if(x=="")    throw "值为空";
if(isNaN(x)) throw "不是数字";
if(x>10)     throw "大于十";
if(x<5)      throw "小于五";
}
catch(err)
{
var y=document.getElementById("mess");
y.innerHTML="错误:" + err + "。";
}
}
</script>

<h1> JavaScript </h1>
<p>请输入 5 到 10 之间的数字:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">测试输入值</button>
<p id="mess"></p>

</body>
</html>