更新時間:2019-08-19 09:27:46 來源:動力節(jié)點 瀏覽2401次
一異常處理
程序執(zhí)行過程中出現(xiàn)異常.異常會導致程序異常終止.
異常處理是處理運行時的錯誤,以保持正常應用程序流的強大機制.
異常發(fā)生的幾個主要原因:
●用戶輸入了非法數(shù)據(jù)
●要打開的文件不存在
●網(wǎng)絡通信時連接中斷,或者JVM(java虛擬機)內存溢出
異常有的是因為用戶錯誤引起的,有的是程序錯誤或物理錯誤引起的,但是,一個寫得好的程序應該處理所有可能的異常情況.
可以使用try和catch關鍵字來捕獲異常.try/catch代碼塊放在異常可能發(fā)生的地方.try/catch代碼塊中的代碼稱為代碼保護.
try{
//程序代碼
}catch(Exceptione){
//catch代碼塊
}
catch語句包含要捕獲異常類型的聲明.當try語句塊中發(fā)生一個異常,catch語句塊就會被檢查
Exception類型可以用來捕獲所有可能的異常
下面的例子說明了,當嘗試訪問一個不存在的數(shù)組索引時的異常處理:
publicclassExcepTest{
publicstaticvoidmain(String[]args){
try{
inta[]=newint[2];
System.out.println(a[3]);
}catch(Exceptione){
System.out.println("Anerroroccurred");}
}
}//輸出"Anerroroccurred"
沒有try/catch塊,這段代碼會導致程序崩潰,因為a[3]不存在
catch塊中的(Exceptione)語句,用于捕獲所有可能的異常
二多重異常
使用throw關鍵字可以手動生成方法中的異常.一些可用的異常類型包括:IndexOutOfBoundsException,IllegalArgumentException,ArithmeticException,IOException等等
例如,參數(shù)為0時,我們可以在方法中拋出ArithmeticException.
intdiv(inta,intb)throwsArithmeticException{
if(b==0){
thrownewArithmeticException("DivisionbyZero");
}else{
returna/b;}
}
方法定義中的throws語句定義了方法可以拋出的Exception類型.接下來,throw關鍵字會引發(fā)相應的異常,并附帶自定義消息.
如果b等于0,它將拋出一個ArithmeticException,并帶有"DivisionbyZero"消息
●可以使用(,)分割throws語句中的多個異常類型
一個try代碼塊后面可以跟隨多個catch代碼塊,這種情況就叫多重捕獲,分別處理不同的異常.
try{...}
catch(異常類型1異常變量名1){...}
catch(異常類型2異常變量名2){...}
catch(異常類型3異常變量名3){...}
●所有catch塊應該從最具體到最普遍的順序排列.在特定的異常之后,最后一個catch塊中的異常類型可以使用Exception類型來處理所有其他異常
三多線程編程
java是一種多線程編程語言.我們的程序可以同時運行兩個或多個組件來優(yōu)化可用資源,每個組件處理不同的任務.
你可以將單個應用程序中的特定操作細分為全部并發(fā)運行的單個線程.
線程是一個動態(tài)執(zhí)行的過程,它也有一個從產生到死亡的過程.線圖顯示了一個線程完整的生命周期.
Java提供了兩種創(chuàng)建線程的方法.
第一個創(chuàng)建線程的方法是創(chuàng)建一個新的類,該類繼承Thread類,然后創(chuàng)建一個類的實例
classAextendsThread{
publicvoidrun(){
System.out.println("Hello");}
publicstaticvoidmain(String[]args){
Aobject=newA();
object.start();}
}
創(chuàng)建一個線程的第二種方法是實現(xiàn)Runnable接口,實現(xiàn)run()方法,然后創(chuàng)建一個Thread對象,將實現(xiàn)Runnable接口的類的實例作為參數(shù)傳遞給Thread的構造函數(shù),并調用start()方法來啟動Thread.
classLoaderimplementsRunnable{
publicvoidrun(){
System.out.println("HelloLu");}
}
classMyJavaClasss{
publicstaticvoidmain(String[]args){
Threadt=newThread(newLoader());
t.start();}
}
Thread.sleep()方法將線程暫停指定的時間段.例如Thread.sleep(1000);暫停一分鐘的線程.
Thread.sleep()拋出一個InterruptedException,所以一定要用try/catch塊包圍它.
實現(xiàn)Runnable接口比從Thread類繼承復雜一點,但是,實現(xiàn)Runnable接口是啟動線程的首選方法,因為它使你可以從另一個類進行繼承.
0基礎 0學費 15天面授
有基礎 直達就業(yè)
業(yè)余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習