異常_自定義異常_finally_package(包)_打jar包

----------- android培訓java培訓、java學習型技術博客、期待與您交流! ------------
【異常】
異常:就是程序在【運行時】出現不正常情況。代碼不往下執行了,jvm就把程序結束了【算術規則,除數不能爲0】
異常由來:問題也是現實生活中一個具體的事物,也可以通過java的類的形式進行描述。並封裝成對象【異常】。
異常其實就是java對不正常情況進行描述後的對象體現。把問題封裝成對象就是異常
對於問題的劃分:兩種:一種是嚴重的問題,一種非嚴重的問題。
對於嚴重的,java通過Error類進行描述。對於Error一般不編寫針對性的代碼對其進行處理。
對與非嚴重的,java通過Exception類進行描述。對於Exception可以使用針對性的處理方式進行處理。
【異常的處理】
java 對異常處理方式
try
{
需要被檢測的代碼;
}
catch(異常類 變量)
{
處理異常的代碼;(處理方式)
}
finally
{
一定會執行的語句;
}
在函數上聲明異常。int div(int a,int b)throws ArithmeticException
便於提高安全性,讓調用出進行處理。不處理編譯失敗。
對多異常的處理。 
1,聲明異常時,建議聲明更爲具體的異常。這樣處理的可以更具體。
2,對方聲明幾個異常,就對應有幾個catch塊。不要定義多餘的catch塊。
如果多個catch塊中的異常出現繼承關係,父類異常catch塊放在最下面。

建立在進行catch處理時,catch中一定要定義具體處理方式。
不要簡單定義一句 e.printStackTrace(),也不要簡單的就書寫一條輸出語句。
***真出現問題,我們是不在控制檯打印的,把問題信息用一個硬盤文件記錄下來(稱之爲異常日誌文件)
【自定義異常】
因爲項目中會出現特有的問題,而這些問題並未被java所描述並封裝對象。
所以對於這些特有的問題可以按照java的對問題封裝的思想。將特有的問題。進行自定義的異常封裝
當在函數內部出現了throw拋出異常對象,那麼就必須要給對應的處理動作。
要麼在內部try catch處理。要麼在函數上聲明讓調用者處理。
如何定義異常信息呢?
因爲父類中已經把異常信息的操作都完成了。
所以子類只要在構造時,將異常信息傳遞給父類通過super語句。
那麼就可以直接通過getMessage方法獲取自定義的異常信息。
【throws和throw的區別】
throws使用在函數上。
throw使用在函數內。
throws後面跟的異常類。可以跟多個,用逗號隔開。
throw後跟的是異常對象。
對於異常分兩種:
1,編譯時被檢測的異常。【不是RuntimeException異常,但拋出了異常確沒聲明】
2,編譯時不被檢測的異常(運行時異常。RuntimeException以及其子類)
異常格式:
第一個格式:
try{}catch (){}
第二個格式:try{}catch (){}finally{}
第三個格式:try{}finally{}
第三個格式:try{}catch (){}catch (){}catch (){}
//記住一點:catch是用於處理異常。如果沒有catch就代表異常沒有被處理過,如果該異常是檢測時異常。那麼必須聲明。
異常在子父類覆蓋中的體現;
【異常總結】
異常:
是什麼?是對問題的描述。將問題進行對象的封裝。
異常體系:
Throwable
|--Error
|--Exception
|--RuntimeException
異常體系的特點:異常體系中的所有類以及建立的對象都具備可拋性。
也就是說可以被throw和throws關鍵字所操作。
只有異常體系具備這個特點。
throw和throws的用法:
throw定義在函數內,用於拋出異常對象。
throws定義在函數上,用於拋出異常類,可以拋出多個用逗號隔開。
當函數內容有throw拋出異常對象,並未進行try處理。必須要在函數上聲明,否則編譯失敗。
注意,RuntimeException除外。也就說,函數內如果拋出的RuntimeExcpetion異常,函數上可以不用聲明。
如果函數聲明瞭異常,調用者需要進行處理。處理方法可以throws  可以try。
異常有兩種:
編譯時被檢測異常
該異常在編譯時,如果沒有處理(沒有拋也沒有try),編譯失敗。
該異常被標識,代表這可以被處理。
運行時異常(編譯時不檢測)
在編譯時,不需要處理,編譯器不檢查。
該異常的發生,建議不處理,讓程序停止。需要對代碼進行修正。
異常的好處:
1,將問題進行封裝。
2,將正常流程代碼和問題處理代碼相分離,方便於閱讀。
異常的處理原則:
1,處理方式有兩種:try 或者 throws。
2,調用到拋出異常的功能時,拋出幾個,就處理幾個。
一個try對應多個catch。
3,多個catch,父類的catch放到最下面。
4,catch內,需要定義針對性的處理方式。不要簡單的定義printStackTrace,輸出語句。
也不要不寫。
當捕獲到的異常,本功能處理不了時,可以繼續在catch中拋出。
【package】
package pack;
包名所有字母小寫,有了包之後,類的全名叫:包名.類名
有包了編譯就要加參數:javac -d . a.java
-d指定包所存放的地址(目錄)
.代表當前目錄,
java pack.a
包的出現可以讓java源文件和java的類文件相分離
java要運行的時候classpath指向包的父目錄即可:
【不同包中的類如何訪問】
用那個包裏的類,就把此類的包用import導進來:
包與包之間進行訪問,被訪問的包中的類以及類中的成員,需要public修飾
不同包中的子類還可以直接訪問父類中被protected(保護)權限修飾的成員
包與包之間可以使用的權限只有兩種,public  protected。而且只能給子類使用
                         public   protected       default     private
同一個類中        ok            ok                 ok             ok
同一個包中        ok            ok                 ok
子類                    ok            ok             
不同包中            ok
同一個包中protected只限於子類覆蓋,
【jar包:】
方便項目的攜帶
【類文件用文件夾存起來了,文件越來越多,把這文件夾或多個文件夾打成個壓縮包
要使用一個工具完成:
javac -d c:\myclass DemoA.java
set classpath
1: 先把文件編譯成類文件
2: jar 回車  瞭解下
3:  切換到c:\myclass下
3: jar -cfv haha.jar packa pack
      -c創建一個壓縮文件  
f指定歸檔文件名:haha.jar
v顯示詳細信息
把c:\myclass下包文件夾(想把那幾個包文件夾打到jar包裏就把那幾個包文件夾名寫到後面)如:packa pack
你要是想打成壓縮包可以直接右鍵哈哈
4:  jar -tf haha.jar   查看壓縮包裏的目錄(jar -tvf haha.jar)
也可以右鍵打開方式用rar打開
5: 【使用jar包】把jr包放到classpath下就行了
set classpath=c:\myclass\haha.jar
java pack.JarDemo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章