1.try throw catch :
当程序在运行过程中出现可预知的错误时,希望程序继续运行不要被打断这时可以将异常抛出,向用户提供有意义的错误信息.
try 语句测试代码块的错误。
catch 语句处理错误。
throw 语句创建自定义错误。
try catch 一般成对出现,如果要创建自定义错误,可以加上throw。
如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。
2.Error 对象:
一般自定义异常时使用,
两种构造方法:
new Error();
new Error(“异常信息”);
Error具有下面一些主要属性:
description: 错误描述 (仅IE可用).
fileName: 出错的文件名 (仅Mozilla可用).
lineNumber: 出错的行数 (仅Mozilla可用).
message: 错误信息 (在IE下同description)
name: 错误类型.
number: 错误代码 (仅IE可用).
stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).
3.主要的系统异常:
EvalError: raised when an error occurs executing code in eval()
RangeError: raised when a numeric variable or parameter is outside of its valid range
ReferenceError: raised when de-referencing an invalid reference
SyntaxError: raised when a syntax error occurs while parsing code in eval()
TypeError: raised when a variable or parameter is not a valid type
URIError: raised when encodeURI() or decodeURI() are passed invalid parameters
这些系统异常均继承于Error 。
如果try()块中出现这些异常,catch 会直接捕捉。
4.自定义异常举例: 求一个数的平方根
<script type="text/javascript">
window.onload = function(){
var ans = prompt("Enter a number");
try{
if(!ans || isNaN(ans) || ans<0){
throw new Error("Not a valid number");
}
alert(ans + "的平方根是:" + Math.sqrt(ans));
}
catch(errMsg){
alert(errMsg.message);
}
{
alert("你猜我会不会执行");
}
}
</script>
5.代码分析:
- 此处为自定义异常。
- 抛出异常的情况:用户无输入,输入的不是数字,输入了负数。
- try {} 代码块中为可能出现异常的代码, if()条件为真时,抛出异常。这里抛出的异常是 Error 对象,异常信息为参数。如条件为假则无异常继续执行try 中语句。
- catch(e) 捕捉并处理异常。出现错误时,Error对象将作为参数传递给它,此时可以通过 Error 的一系列属性了解异常信息。捕获到的错误才向用户显示。
- 可选部分:在 catch语句之后,可以有一个 { }代码块,无论是否抛出错误,这里的代码都会执行。
-系统异常会直接catch。
6.系统异常举例:
<script type="text/javascript">
window.onload = message;
function message(){
try{
allert("hello"); //此处 alert 拼写错误
}
catch(e){
alert("错误信息为:"+e.message)
}
}
</script>
运行结果为 错误信息为:allert is not defined
有这个例子可知,异常可以是 JavaScript 字符串、数字、逻辑值或对象。并可以作为 catch的实参被接收。