Java零基礎(chǔ)自學(xué)教程,異常線程

Java零基礎(chǔ)自學(xué)教程,異常線程

長沙中公優(yōu)就業(yè)      2022-04-09 14:07:01     6

Java零基礎(chǔ)自學(xué)教程,異常線程,  一異常處理  程序執(zhí)行過程中出現(xiàn)異常.異常會導(dǎo)致程序異常終止.  異常處理是處理運(yùn)行時(shí)的錯(cuò)誤,以保持正常應(yīng)用程序流的強(qiáng)

課程價(jià)格 請咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

  一異常處理


  程序執(zhí)行過程中出現(xiàn)異常.異常會導(dǎo)致程序異常終止.


  異常處理是處理運(yùn)行時(shí)的錯(cuò)誤,以保持正常應(yīng)用程序流的強(qiáng)大機(jī)制.


  異常發(fā)生的幾個(gè)主要原因:


  ●用戶輸入了非法數(shù)據(jù)


  ●要打開的文件不存在


  ●網(wǎng)絡(luò)通信時(shí)連接中斷,或者JVM(java虛擬機(jī))內(nèi)存溢出


  異常有的是因?yàn)橛脩翦e(cuò)誤引起的,有的是程序錯(cuò)誤或物理錯(cuò)誤引起的,但是,一個(gè)寫得好的程序應(yīng)該處理所有可能的異常情況.


  可以使用try和catch關(guān)鍵字來捕獲異常.try/catch代碼塊放在異??赡馨l(fā)生的地方.try/catch代碼塊中的代碼稱為代碼保護(hù).


  try{


  //程序代碼


  }catch(Exceptione){


  //catch代碼塊


  }


  catch語句包含要捕獲異常類型的聲明.當(dāng)try語句塊中發(fā)生一個(gè)異常,catch語句塊就會被檢查


  Exception類型可以用來捕獲所有可能的異常


  下面的例子說明了,當(dāng)嘗試訪問一個(gè)不存在的數(shù)組索引時(shí)的異常處理:


  publicclassExcepTest{


  publicstaticvoidmain(String[]args){


  try{


  inta[]=newint[2];


  System.out.println(a[3]);


  }catch(Exceptione){


  System.out.println("Anerroroccurred");}


  }


  }//輸出"Anerroroccurred"


  沒有try/catch塊,這段代碼會導(dǎo)致程序崩潰,因?yàn)閍[3]不存在


  catch塊中的(Exceptione)語句,用于捕獲所有可能的異常


  二多重異常


  使用throw關(guān)鍵字可以手動(dòng)生成方法中的異常.一些可用的異常類型包括:IndexOutOfBoundsException,IllegalArgumentException,ArithmeticException,IOException等等


  例如,參數(shù)為0時(shí),我們可以在方法中拋出ArithmeticException.


  intdiv(inta,intb)throwsArithmeticException{


  if(b==0){


  thrownewArithmeticException("DivisionbyZero");


  }else{


  returna/b;}


  }


  方法定義中的throws語句定義了方法可以拋出的Exception類型.接下來,throw關(guān)鍵字會引發(fā)相應(yīng)的異常,并附帶自定義消息.


  如果b等于0,它將拋出一個(gè)ArithmeticException,并帶有"DivisionbyZero"消息


  ●可以使用(,)分割throws語句中的多個(gè)異常類型


  一個(gè)try代碼塊后面可以跟隨多個(gè)catch代碼塊,這種情況就叫多重捕獲,分別處理不同的異常.


  try{...}


  catch(異常類型1異常變量名1){...}


  catch(異常類型2異常變量名2){...}


  catch(異常類型3異常變量名3){...}


  ●所有catch塊應(yīng)該從最具體到最普遍的順序排列.在特定的異常之后,最后一個(gè)catch塊中的異常類型可以使用Exception類型來處理所有其他異常


  三多線程編程


  java是一種多線程編程語言.我們的程序可以同時(shí)運(yùn)行兩個(gè)或多個(gè)組件來優(yōu)化可用資源,每個(gè)組件處理不同的任務(wù).


  你可以將單個(gè)應(yīng)用程序中的特定操作細(xì)分為全部并發(fā)運(yùn)行的單個(gè)線程.


  線程是一個(gè)動(dòng)態(tài)執(zhí)行的過程,它也有一個(gè)從產(chǎn)生到死亡的過程.線圖顯示了一個(gè)線程完整的生命周期.

  Java提供了兩種創(chuàng)建線程的方法.


  第一個(gè)創(chuàng)建線程的方法是創(chuàng)建一個(gè)新的類,該類繼承Thread類,然后創(chuàng)建一個(gè)類的實(shí)例


  classAextendsThread{


  publicvoidrun(){


  System.out.println("Hello");}


  publicstaticvoidmain(String[]args){


  Aobject=newA();


  object.start();}


  }


  創(chuàng)建一個(gè)線程的第二種方法是實(shí)現(xiàn)Runnable接口,實(shí)現(xiàn)run()方法,然后創(chuàng)建一個(gè)Thread對象,將實(shí)現(xiàn)Runnable接口的類的實(shí)例作為參數(shù)傳遞給Thread的構(gòu)造函數(shù),并調(diào)用start()方法來啟動(dòng)Thread.


  classLoaderimplementsRunnable{


  publicvoidrun(){


  System.out.println("HelloLu");}


  }


  classMyJavaClasss{


  publicstaticvoidmain(String[]args){


  Threadt=newThread(newLoader());


  t.start();}


  }


  Thread.sleep()方法將線程暫停指定的時(shí)間段.例如Thread.sleep(1000);暫停一分鐘的線程.


  Thread.sleep()拋出一個(gè)InterruptedException,所以一定要用try/catch塊包圍它.


  實(shí)現(xiàn)Runnable接口比從Thread類繼承復(fù)雜一點(diǎn),但是,實(shí)現(xiàn)Runnable接口是啟動(dòng)線程的首選方法,因?yàn)樗鼓憧梢詮牧硪粋€(gè)類進(jìn)行繼承.


Java基礎(chǔ)教程 Java自學(xué)教程

培訓(xùn)啦提醒您:交易時(shí)請核實(shí)對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。