<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无码一区二区三区DV | 青青久在线视频免费观看| 久久综合日韩亚洲精品色| 免费观看国产精品| 成人午夜免费视频| 免费一级黄色毛片| yellow免费网站| 久久精品亚洲精品国产色婷| 5g影院5g天天爽永久免费影院| 亚洲的天堂av无码| 成人免费一区二区无码视频| 性色午夜视频免费男人的天堂| 亚洲欧洲在线观看| 成人免费淫片在线费观看| 国产精品亚洲一区二区在线观看| 亚洲av麻豆aⅴ无码电影| 中文字幕无码免费久久9一区9 | 中文成人久久久久影院免费观看 | 亚洲a∨国产av综合av下载| 亚洲另类激情专区小说图片| 中文字幕a∨在线乱码免费看 | 噜噜嘿在线视频免费观看| 老司机免费午夜精品视频| 亚洲中文字幕不卡无码| 99久久精品日本一区二区免费| 亚洲欧美国产欧美色欲| 日本亚洲国产一区二区三区| 亚洲国产精品综合久久一线| 久久久久免费精品国产| 亚洲免费综合色在线视频| 亚洲一级毛片免费看| 亚洲&#228;v永久无码精品天堂久久| 色婷婷7777免费视频在线观看| 中文字幕免费在线播放| 一级做a毛片免费视频| 黄色短视频免费看| 亚洲精品天堂无码中文字幕| 亚洲视频一区调教| 亚洲天天做日日做天天看|