<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 5, comments - 16, trackbacks - 0, articles - 0

    JavaScript中try...catch和異常處理

    Posted on 2006-09-05 17:56 BennyBao 閱讀(2000) 評(píng)論(1)  編輯  收藏 所屬分類: AJAX
    在JavaScript可以使用try...catch來(lái)進(jìn)行異常處理。例如:
    try ? {
    ????foo.bar();
    }
    ? catch ?(e)?
    {
    ????alert(e.name?
    + ? " :? " ? +
    ?e.message);
    }

    目前我們可能得到的系統(tǒng)異常主要包含以下6種:
    • 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

    上面的六種異常對(duì)象都繼承自Error對(duì)象。他們都支持以下兩種構(gòu)造方法:

    new ?Error();
    new ?Error( " 異常信息 " );

    手工拋出異常的方法如下:

    try ? {
    ????
    throw ? new ?Error( " Whoops! "
    );
    }
    ? catch ?(e)? {
    ????alert(e.name?
    + ? " :? " ? +
    ?e.message);
    }

    如要判斷異常信息的類型,可在catch中進(jìn)行判斷:

    try ? {
    ????foo.bar();
    }
    ? catch ?(e)?
    {
    ????
    if ?(e? instanceof ?EvalError)?
    {
    ????????alert(e.name?
    + ? " :? " ? +
    ?e.message);
    ????}
    ? else ? if ?(e? instanceof ?RangeError)? {
    ????????alert(e.name?
    + ? " :? " ? +
    ?e.message);
    ????}

    ????
    // ??etc
    }

    Error具有下面一些主要屬性:

    • description: 錯(cuò)誤描述 (僅IE可用).
    • fileName: 出錯(cuò)的文件名 (僅Mozilla可用).
    • lineNumber: 出錯(cuò)的行數(shù) (僅Mozilla可用).
    • message: 錯(cuò)誤信息 (在IE下同description)
    • name: 錯(cuò)誤類型.
    • number: 錯(cuò)誤代碼 (僅IE可用).
    • stack: 像Java中的Stack Trace一樣的錯(cuò)誤堆棧信息 (僅Mozilla可用).
    因此為了更好的了解錯(cuò)誤信息我們可以將catch部分改為如下形式:

    try ? {
    ????foo.bar();
    }
    ? catch ?(e)?
    {
    ????
    if ?(browserType? != ?BROWSER_IE)?
    {????????????????????????????
    ????????alert(
    ????????????
    " name:? " ? + ?e.name? +

    ????????????
    " \nmessage:? " ? + ?e.message? +
    ????????????
    " \nlineNumber:? " ? + ?e.lineNumber? +
    ????????????
    " \nfileName:? " ? + ?e.fileName? +
    ????????????
    " \nstack:? " ? + ?e.stack);????????
    ????}

    ????
    else ? {????????????????????
    ????????alert(
    ????????????
    " name:? " ? + ?e.name? +
    ????
    ????????????
    " \nerrorNumber:? " ? + ?(e.number? & ? 0xFFFF )? +

    ????????????
    " \nmessage:? " ? + ?e.message " );????????
    ????}

    }

    JavaScript中的throw命令事實(shí)上可以拋出任何對(duì)象,并且我們可以在catch接受到此對(duì)象。例如:

    try ? {
    ????
    throw ? new ?Date();???? // ?拋出當(dāng)前時(shí)間對(duì)象

    }
    ? catch ?(e)? {
    ????alert(e.toLocaleString());????
    // ?使用本地格式顯示當(dāng)前時(shí)間

    }

    Feedback

    # re: JavaScript中try...catch和異常處理  回復(fù)  更多評(píng)論   

    2009-06-21 10:55 by Daniel Hu
    這是我的整理,http://www.daniel-journey.com/archives/63 javascript異常處理使用總結(jié)
    主站蜘蛛池模板: 国产精品99精品久久免费| 亚洲va无码va在线va天堂| 最近最新高清免费中文字幕| 亚洲hairy多毛pics大全| 亚洲天天做日日做天天看| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲乱码一区av春药高潮| 亚洲区小说区激情区图片区| 永久中文字幕免费视频网站| 1000部免费啪啪十八未年禁止观看 | 高潮毛片无遮挡高清免费视频| 亚洲精品视频观看| 亚洲成av人片天堂网| 亚洲国产中文v高清在线观看| 好爽…又高潮了毛片免费看| 黄在线观看www免费看| 999久久久免费精品播放| 水蜜桃视频在线观看免费播放高清| 午夜亚洲国产精品福利| 久久亚洲AV成人无码国产最大| 亚洲专区一路线二| 亚洲人成电影青青在线播放| 久久亚洲sm情趣捆绑调教| 久久亚洲精品中文字幕三区| 久久精品国产精品亚洲下载| 亚洲国产精品成人AV无码久久综合影院 | 日韩成人免费aa在线看| 我要看免费的毛片| 成年女人色毛片免费看| 性xxxx视频播放免费| 最近中文字幕mv手机免费高清| 一本无码人妻在中文字幕免费| 国产免费毛不卡片| 成人无码区免费A片视频WWW| 国产一卡2卡3卡4卡无卡免费视频| 天天影视色香欲综合免费| 色影音免费色资源| 最新猫咪www免费人成| 妞干网在线免费观看| 色播在线永久免费视频| 国产成人无码免费视频97|