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

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

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

    最?lèi)?ài)Java

    書(shū)山有路勤為徑,學(xué)海無(wú)涯苦作舟

    《AspectJ Cookbook》讀書(shū)筆記五: 捕獲異常處理上的連接點(diǎn)

        在Java中拋出異常時(shí),會(huì)將其向上傳遞給調(diào)用者,直到它被作為try/catch塊一部分的catch語(yǔ)句處理或者到達(dá)Java運(yùn)行庫(kù)并在控制臺(tái)引發(fā)一條混亂的消息。如果捕獲到異常,就應(yīng)該將異常作為一個(gè)對(duì)象傳遞給catch塊做合適的處理。同時(shí),還有一種可能需要方面作為橫切行為做一部分事情,或者替代catch塊的正常行為。
    一. 捕獲何時(shí)捕捉異常
        使用handler(TypePattern)切入點(diǎn)。其語(yǔ)法如下:
        pointcut <pointcut name>(<any values to be picked up>) : handler(<class>):
     
       handler(TypePattern)切入點(diǎn)具有5個(gè)關(guān)鍵特征:
       1. handler(TypePattern)在捕獲異常的作用域內(nèi)選擇連接點(diǎn)。
       2. handler(TypePattern)切入點(diǎn)的通知僅用于類(lèi)型模式指定Throwable或其子類(lèi)的地方。
       3. TypePattern聲明無(wú)論何時(shí)捕捉到異常或其子類(lèi)的匹配模式,都會(huì)應(yīng)用相應(yīng)的通知。
       4. handler(TypePattern)切入點(diǎn)只支持before()形式的通知。這意味著不能使用像around()這樣的通知來(lái)重寫(xiě)catch塊的正常行為。
       5. TypePattern可以包含通配符,用于選擇不同類(lèi)上的一系列連接點(diǎn)。
    帶有通配符的TypePattern 描述
    mypackage..* 捕獲mypackage包及其子包中的連接點(diǎn)類(lèi)
    MyClass+ 捕獲MyClass類(lèi)及其任何子類(lèi)中的連接點(diǎn)

        下面的例子展示了捕獲任何類(lèi)拋出MyException類(lèi)異常:

    package com.aspectj;

    public aspect HandlerRecipe {
        
    /**
         * Specifies calling advice when any exception object
         * is caught that matches the following rules for its 
         * type pattern;
         * 
         * Type:MyException
         
    */

        pointcut myExceptionHandlerPointcut() : handler(MyException);
        
        
    //Advice declaration
        before() : myExceptionHandlerPointcut() {
            System.out.println(
    "------------------- Aspect Advice Logic -------------------");
            System.out.println(
    "In the advice picked by " + "myExceptionHandlerPointcut()");
            System.out.println(
    "Signature: " + thisJoinPoint.getStaticPart().getSignature());
            System.out.println(
    "Source Line: " + thisJoinPoint.getStaticPart().getSourceLocation());
            System.out.println(
    "------------------------------------------");
        }

    }


    二. 捕獲拋出的異常
        結(jié)合使用args([Types | Identifiers])切入點(diǎn) 與handler(TypePattern)切入點(diǎn),將捕獲的異常展示為切入點(diǎn)上的標(biāo)識(shí)符,可將其傳遞給相應(yīng)的通知。
    package com.aspectj;

    public aspect AccessThrownException {
        pointcut myExceptionHandlerPointout(MyException exception) : handler(MyException) 
    && args(exception);
        
        
    //Advice declaration
        before(MyException exception) : myExceptionHandlerPointout(exception) {
            System.out.println(
    "------------------- Aspect Advice Logic -------------------");
            System.out.println(
    "In the advice picked by " + "myExceptionHandlerPointcut()");
            System.out.println(
    "Signature: " + thisJoinPoint.getStaticPart().getSignature());
            System.out.println(
    "Source Line: " + thisJoinPoint.getStaticPart().getSourceLocation());
            System.out.println(
    "Exception caught:");
            exception.printStackTrace();
            System.out.println(
    "------------------------------------------");
        }

    }
       

    posted on 2008-07-11 09:28 Brian 閱讀(1610) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): 《AspectJ Cookbook》讀書(shū)筆記

    評(píng)論

    # re: 《AspectJ Cookbook》讀書(shū)筆記五: 捕獲異常處理上的連接點(diǎn) 2008-07-12 10:54 大梅沙云頂天海會(huì)所

    nnn
      回復(fù)  更多評(píng)論   

    公告


    導(dǎo)航

    <2008年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統(tǒng)計(jì)

    常用鏈接

    留言簿(4)

    隨筆分類(lèi)

    隨筆檔案

    收藏夾

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 一级毛片在线免费视频| 亚洲制服在线观看| 免费大片黄在线观看| 成年女人永久免费观看片| 亚洲午夜无码毛片av久久京东热| 在线观看av永久免费| 亚洲人成色777777老人头| 国产青草视频免费观看97| 无遮挡国产高潮视频免费观看| 亚洲一区二区视频在线观看| 久青草视频97国内免费影视| 亚洲av永久无码精品古装片| 免费成人福利视频| 亚洲日韩国产精品乱-久| 国产伦一区二区三区免费 | 亚洲免费视频观看| 我要看WWW免费看插插视频| 亚洲风情亚Aⅴ在线发布| 免费人成视网站在线观看不卡| 一级女性全黄生活片免费看| 国产亚洲无线码一区二区 | 久久久亚洲欧洲日产国码是AV | 国产一区二区免费在线| 久久久WWW成人免费精品| 久久久亚洲欧洲日产国码二区| 一二三四在线播放免费观看中文版视频| 亚洲国产美女精品久久久| 亚洲精品无码99在线观看| 无码一区二区三区免费| 国产AV旡码专区亚洲AV苍井空| 免费国产a国产片高清| 日本免费在线观看| 亚洲AV无码专区在线观看成人| 夜夜春亚洲嫩草影院| 91九色精品国产免费| 青青草97国产精品免费观看| 亚洲综合激情另类小说区| 免费国产a国产片高清网站| 4399影视免费观看高清直播| 瑟瑟网站免费网站入口| 亚洲视频网站在线观看|