異常 運行時和編譯時

異常(Exception):你能夠使用運行時異常或者編譯時異常。編程


運行時異常(RuntimeException)也稱做未檢測的異常(unchecked exception),這表示這種異常不須要編譯器來檢測。RuntimeException是全部能夠在運行時拋出的異常的父類。一個方法除要捕獲異常外,若是它執行的時候可能會拋出RuntimeException的子類,那麼它就不須要用throw語句來聲明拋出的異常。ide

例如:NullPointerException,ArrayIndexOutOfBoundsException,等等函數

受檢查異常(checked exception)都是編譯器在編譯時進行校驗的,經過throws語句或者try{}cathch{} 語句塊來處理檢測異常。編譯器會分析哪些異常會在執行一個方法或者構造函數的時候拋出。spa


面向切面的編程(Aspect Oriented Programming-AOP):切面能夠在編譯時,運行時或,加載時或者運行時織入。代理


  • 編譯期:編譯期織入是最簡單的方式。若是你擁有應用的代碼,你能夠使用AOP編譯器(例如,ajc – AspectJ編譯器)對源碼進行編譯,而後輸出織入完成的class文件。AOP編譯的過程包含了waver的調用。切面的形式能夠是源碼的形式也能夠是二進制的形式。若是切面須要針對受影響的類進行編譯,那麼你就須要在編譯期織入了。繼承

  • 編譯後:這種方式有時候也被稱爲二進制織入,它被用來織入已有的class文件和jar文件。和編譯時織入方式相同,用來織入的切面能夠是源碼也能夠是二進制的形式,而且它們本身也能夠被織入切面。編譯器

  • 裝載期:這種織入是一種二進制織入,它被延遲到JVM加載class文件和定義類的時候。爲了支持這種織入方式,須要顯式地由運行時環境或者經過一種「織入代理(weaving agent)「來提供一個或者多個「織入類加載器(weaving class loader)」。源碼

  • 運行時:對已經加載到JVM裏的類進行織入it


繼承 – 發生在編譯時,由於它是靜態的io

代理或者組合 – 發生在運行時,由於它更加具備動態性和靈活性。

相關文章
相關標籤/搜索