js中的异常处理try...catch

逃离我推掉我的手 2022-06-17 09:19 244阅读 0赞
  1. 在Javascript可以使用try…catch来进行异常处理。例如:

    try {

    1. foo.bar();
    2. } catch (e) {
    3. alert(e.name + ": " + e.message);
    4. }
  2. 目前我们可能得到的系统异常主要包含以下6种:

    EvalError: raised when an error occurs executing code in eval()

    1. //在执行eval()方法的时候可能会出现该异常

    RangeError: raised when a numeric variable or parameter is outside of its valid range

    1. //数字超过范围

    ReferenceError: raised when de-referencing an invalid reference

    1. // 不合法的引用异常

    SyntaxError: raised when a syntax error occurs while parsing code in eval()

    1. //最常见异常,语法错误的时候发生

    TypeError: raised when a variable or parameter is not a valid type

    1. //当变量或者参数不合法的时候发生

    URIError: aised when encodeURI() or decodeURI() are passed invalid parameters

    1. // encodeURI()和 decodeURI() 方法遇到不合法的参数是发生

说明: 上面的六种异常对象都继承自Error对象。他们都支持以下两种构造方法:
new Error();
new Error(“异常信息”);

  1. 手工抛出异常的方法如下:

    try {

    1. throw new Error("Whoops!");

    } catch (e) {

    1. alert(e.name + ": " + e.message);

    }

  2. 如要判断异常信息的类型,可在catch中进行判断:

    try {

    1. foo.bar();

    } catch (e) {

    1. if (e instanceof EvalError) {
    2. alert(e.name + ":" + e.message);

    } else if (e instanceof RangeError) {

    1. alert(e.name + ": " + e.message);

    }
    }

  3. Error具有下面一些主要属性:

    description: 错误描述 (仅IE可用).
    fileName: 出错的文件名 (仅Mozilla可用).
    lineNumber: 出错的行数 (仅Mozilla可用).
    message: 错误信息 (在IE下同description)
    name: 错误类型.
    number: 错误代码 (仅IE可用).
    stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).

因此为了更好的了解错误信息我们可以将catch部分改为如下形式:

  1. try {
  2. foo.bar();
  3. } catch (e) {
  4. if (browserType != BROWSER_IE) {
  5. alert("name: " + e.name + "message: " + e.message + "lineNumber: " + e.lineNumber + "fileName: " + e.fileName + "stack: " + e.stack);
  6. } else {
  7. alert("name: " + e.name +"errorNumber: " + (e.number & 0xFFFF ) + "message: " + e.message"); } }

注意: javascript中的throw命令事实上可以抛出任何对象,并且我们可以在catch接受到此对象。

例如:

  1. try {
  2. throw new Date(); // 抛出当前时间对象
  3. } catch (e) {
  4. alert(e.toLocaleString());
  5. } // 使用本地格式显示当前时间 }

说明:本文参考了http://www.jb51.net/article/41505.htm

发表评论

表情:
评论列表 (有 0 条评论,244人围观)

还没有评论,来说两句吧...

相关阅读

    相关 javatryCatch

    在进行代码编写的时候我们其实是不能预料到所有的可能出现的结果的因为实际使用的用户他是不知道我们的实现逻辑的所以呢,他们的操作也是离奇的怪的,所以我们是不能控制用户输入怎样的操作

    相关 JS异常处理

    Javascript提供了异常处理机制,当程序不正常时应该抛异常。举个栗子: ![70][] 然后运行一下,抛的异常可以自行定义: ![70 1][] 用一下try..

    相关 Js异常处理

    无论哪种语言,都涉及到异常处理 第一:从Java中延伸出来的异常处理try...catch..finally .具体语法:   try{ }