JS中处理错误

来源:互联网 发布:数据库与服务器 编辑:程序博客网 时间:2024/06/07 18:44

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的实参被接收。

原创粉丝点击