亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java學(xué)習(xí)筆記之異常處理

 更新時(shí)間:2018年10月04日 09:09:05   作者:莫凡丶  
這篇文章主要為大家詳細(xì)介紹了Java學(xué)習(xí)筆記之異常處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java異常處理的具體代碼,供大家參考,具體內(nèi)容如下

一.異常的分類

1.由Java虛擬機(jī)拋出的異常(Error):程序無法處理的問題,用戶不用去進(jìn)行處理(虛擬機(jī)錯誤丶內(nèi)存溢出錯誤丶線程死鎖)

2.Exception異常:程序本身可以進(jìn)行處理的異常

1).非檢查異常(Unchecked Exception):編譯器不需要強(qiáng)制處理的異常(空指針異常丶數(shù)組下標(biāo)越界異常丶算數(shù)異常丶類型轉(zhuǎn)換異常)

2).檢查異常(checked Exception):編譯器需要強(qiáng)制處理的異常(IOException丶SQLException) 

二.異常處理的兩種方法

1.通過try丶catch和finally關(guān)鍵字在當(dāng)前位置進(jìn)行異常處理

public static void main(String[] a){
 int sum = 0;
 while(true){
  try {  //以兩數(shù)相除除數(shù)不能為0進(jìn)行舉例
   System.out.println("請依次輸入兩個(gè)數(shù)值進(jìn)行除法操作:");
   Scanner scanner = new Scanner(System.in);
   int one =scanner.nextInt();
   int two =scanner.nextInt();
   sum = one/two;
   System.out.println("最終結(jié)果為:"+sum);
  } catch (Exception e) {    //用catch將錯誤進(jìn)行捕捉,這里可以使用多重catch,對于不同的錯誤進(jìn)行捕捉,但最后的catch建議為Exception。
   // TODO Auto-generated catch block //顯示錯誤堆棧信息
   e.printStackTrace();                          
  }finally{            

 System.out.print("無論有沒有錯誤我都會執(zhí)行");          }
 }
 }
}

輸出:

2.通過try丶catch丶finally丶throw和throws拋出異常給函數(shù)調(diào)用者進(jìn)行處理

public class Try {
 public static void main(String[] a){
  try{
   Function();  //在函數(shù)調(diào)用者處對異常進(jìn)行處理
  }catch(Exception e)
  {
   e.printStackTrace();
  } 
 }
 static void Function() throws Exception{  //通過throws將異常進(jìn)行拋出
  
  System.out.println("請輸入一個(gè)數(shù)值進(jìn)行判斷:");
  Scanner scanner = new Scanner(System.in);
  int one =scanner.nextInt();
  if(one<100)
  {
   throw new Exception(); //若輸入的數(shù)值小于100則拋出異常
  }
 } 
}

輸出:

3.自定義異常進(jìn)行處理

class MyException extends Exception{  //自定義異常,通過super方法傳遞異常信息給父級
 public MyException(){
 super("這是我自定義的異常");
 }
}
 
public class Try {
 public static void main(String[] a){
  try{
   Function();
  }catch(MyException e)
  {
   e.printStackTrace();
  } 
 }
 static void Function() throws MyException{
  
  System.out.println("請輸入一個(gè)數(shù)值進(jìn)行判斷:");
  Scanner scanner = new Scanner(System.in);
  int one =scanner.nextInt();
  if(one<100)
  {
   throw new MyException(); //將自定義異常進(jìn)行拋出  
  }
 } 
}

輸出:

三.異常鏈

有的時(shí)候我們會在處理一個(gè)異常的時(shí)候拋出一個(gè)新的異常,也就是異常的嵌套,但是最后我們得到的異常信息卻只有一個(gè)。

示例:

public class Try {
 public static void main(String[] a){
  try{
   Function1();
  }catch(Exception e)
  {
   e.printStackTrace();
  } 
 }
 static void Function1() throws Exception{
  try{
   Function2();
  }catch(Exception e){
   throw new Exception();
  }
 } 
 static void Function2() throws Exception{
  try{
   Function3();
  }catch(Exception e){
   throw new Exception();
  }
 } 
 static void Function3() throws Exception{
   throw new Exception();
 } 
}

輸入結(jié)果:

這樣的話顯示出的異常就只有一個(gè)了,那我們?nèi)绻胱屵@條異常鏈中的所有異常信息全部輸出該怎么辦呢?方法很簡單,我們在拋出異常的時(shí)候?qū)惓ο笠伯?dāng)作參數(shù)進(jìn)行拋出就行了。

示例:

public class Try {
 public static void main(String[] a){
  try{
   Function1();
  }catch(Exception e)
  {
   e.printStackTrace();
  } 
 }
 static void Function1() throws Exception{
  try{
   Function2();
  }catch(Exception e){
   throw new Exception("異常2",e);
  }
 } 
 static void Function2() throws Exception{
  try{
   Function3();
  }catch(Exception e){
   throw new Exception("異常2",e);
  }
 } 
 static void Function3() throws Exception{
   throw new Exception("異常3");
 } 
}

運(yùn)行結(jié)果:

到此,我們Java中的異常便是描述完了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于Jedis的用法以及Jedis使用Redis事務(wù)

    關(guān)于Jedis的用法以及Jedis使用Redis事務(wù)

    這篇文章主要介紹了關(guān)于Jedis的用法以及Jedis使用Redis事務(wù)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • springboot2.6.3讀取不到nacos上的配置文件問題

    springboot2.6.3讀取不到nacos上的配置文件問題

    這篇文章主要介紹了springboot2.6.3讀取不到nacos上的配置文件問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • springboot?項(xiàng)目啟動后無日志輸出直接結(jié)束的解決

    springboot?項(xiàng)目啟動后無日志輸出直接結(jié)束的解決

    這篇文章主要介紹了springboot?項(xiàng)目啟動后無日志輸出直接結(jié)束的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java基于AES對稱加密算法實(shí)現(xiàn)的加密與解密功能示例

    java基于AES對稱加密算法實(shí)現(xiàn)的加密與解密功能示例

    這篇文章主要介紹了java基于AES對稱加密算法實(shí)現(xiàn)的加密與解密功能,結(jié)合完整實(shí)例形式分析了AES對稱加密算法的定義與使用技巧,需要的朋友可以參考下
    2017-01-01
  • Java基礎(chǔ)教程之Map遍歷的5種方式

    Java基礎(chǔ)教程之Map遍歷的5種方式

    Map作為Java中的一種集合,以鍵值對的形式存放一批數(shù)據(jù),經(jīng)常會被我們應(yīng)用在項(xiàng)目中,這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之Map遍歷的5種方式,需要的朋友可以參考下
    2024-01-01
  • Java 如何快速,優(yōu)雅的實(shí)現(xiàn)導(dǎo)出Excel

    Java 如何快速,優(yōu)雅的實(shí)現(xiàn)導(dǎo)出Excel

    這篇文章主要介紹了Java 如何快速,優(yōu)雅的實(shí)現(xiàn)導(dǎo)出Excel,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03
  • springboot項(xiàng)目中的bootstrap.yml配置不生效的原因及解決(沒有自動提示)

    springboot項(xiàng)目中的bootstrap.yml配置不生效的原因及解決(沒有自動提示)

    新創(chuàng)建一個(gè) springboot項(xiàng)目,添加了 bootstrap.yml 文件,發(fā)現(xiàn)文件并沒有如預(yù)期變成綠色葉子,編寫的時(shí)候也沒有自動提示,啟動的時(shí)候,發(fā)現(xiàn)端口是8080,由此發(fā)現(xiàn)配置并沒有生效,所以本文給大家講解了springboot項(xiàng)目中的bootstrap.yml配置不生效的原因及解決
    2024-01-01
  • Java實(shí)現(xiàn)替換集合中的元素的方法詳解

    Java實(shí)現(xiàn)替換集合中的元素的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java中實(shí)現(xiàn)替換集合中的元素的常見方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Springcloud Config支持本地配置文件的方法示例

    Springcloud Config支持本地配置文件的方法示例

    這篇文章主要介紹了Springcloud Config支持本地配置文件的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • java轉(zhuǎn)換時(shí)區(qū)時(shí)間過程詳解

    java轉(zhuǎn)換時(shí)區(qū)時(shí)間過程詳解

    這篇文章主要介紹了java轉(zhuǎn)換時(shí)區(qū)時(shí)間過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評論