最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java  異常詳解及應(yīng)用實(shí)例

 更新時(shí)間:2017年01月18日 15:02:24   投稿:lqh  
這篇文章主要介紹了java 異常詳解及應(yīng)用實(shí)例的相關(guān)資料,需要的朋友可以參考下

java  異常

 異常的使用實(shí)例(異常分類(lèi):Error(是由JVM調(diào)用系統(tǒng)底層發(fā)生的,只能修改代碼) 和 Exception(是JVM發(fā)生的,可以進(jìn)行針對(duì)性處理))

 1.如果一個(gè)方法內(nèi)可能出現(xiàn)異常,那么可以將異常通過(guò)throw的方式new 出相應(yīng)的異常類(lèi),并在方法上   聲明throws可能拋出的異常類(lèi)拋給調(diào)用者,調(diào)用者可以進(jìn)行異常捕獲,或者繼續(xù)拋出異常由 上層調(diào)用者繼續(xù)處理,    如果整個(gè)過(guò)程都沒(méi)有將異常進(jìn)行任何處理,那么將由JVM虛擬機(jī)進(jìn)行默認(rèn)的處理 

2.調(diào)用者可以對(duì)異常進(jìn)行try()catch(){}的異常處理, 也可以繼續(xù)在方法后面throws該異常,catch代碼塊中    如果不處理也可以進(jìn)行throw該異常

 3.運(yùn)行時(shí)異常RuntimeException可以不進(jìn)行顯式的異常聲明

 4.如果父類(lèi)中的方法拋出了異常,如果子類(lèi)對(duì)方法進(jìn)行重寫(xiě)后也拋出異常,那么該異常必須不能大于父類(lèi)的異常類(lèi), 如果父類(lèi)中方法沒(méi)有拋出異常,而子類(lèi)中覆蓋的方法卻拋出了異常,那么此時(shí)只能進(jìn)行try catch來(lái)捕獲此異常,但是也可以將此異常在catch代碼塊中throw  new RuntimeExcetion()進(jìn)行拋出,這樣方法不用進(jìn)行throws聲明  

 5.很多時(shí)候異常并不需要調(diào)用者進(jìn)行處理,調(diào)用者不一定具有處理能力

 6.異常應(yīng)該包裝成上層調(diào)用者可以識(shí)別的異常類(lèi)型,面向不同的調(diào)用者,報(bào)告不同的異常信息,否者調(diào)用者不知道如何處理該異常

    在開(kāi)發(fā)中這點(diǎn)十分重要

  7.finally代碼塊中常常進(jìn)行資源的釋放及關(guān)閉操作,對(duì)于打開(kāi)的資源應(yīng)該進(jìn)行反方向的關(guān)閉操作,因?yàn)橘Y源可能存在依賴(lài)性

  8.如果不進(jìn)行聲明異常,那么目的是不讓調(diào)用者進(jìn)行處理,讓調(diào)用者的程序停止,這樣必須修改錯(cuò)誤代碼

public class ExceptionDemo {

 public static void main(String[] args) {
 //OutOfMemoryError內(nèi)存溢出錯(cuò)誤,
 int[] i = new int[1024*1024*1024];
 System.out.println(i[1]);
 
 //ArrayIndexOutOfBoundsException索引越界異常
 int[] s = new int[2];
 System.out.println(s[2]);
 
 
 Calc calc = new Calc(); 
 //假如我們?cè)谶@里捕獲異常
 try {
  calc.run(4, 0);
  calc.run(4, -1);
 } catch (NegativeException e) {//必須先拋出異常的自定義子類(lèi)
  e.printStackTrace();
  System.out.println(e.getMessage());
  //throw e;//可以繼續(xù)將此異常拋出
 } catch (ArithmeticException e){//拋出自定義異常類(lèi)的父類(lèi)
  e.printStackTrace();
  System.out.println(e.getMessage());
  //throw e;
 } finally {
  System.out.println("finally肯定會(huì)執(zhí)行到");
 }
 //如果上面進(jìn)行了異常捕獲,那么代碼可以繼續(xù)執(zhí)行,否者代碼不能繼續(xù)執(zhí)行
 System.out.println("可以執(zhí)行到!");
 
 try {
  calc.run(4, -1);
  
 } catch (NegativeException e) {
  e.printStackTrace();
  System.out.println(e.getMessage());
  return;
 } finally {
  System.out.println("肯定會(huì)執(zhí)行的");
 }
 System.out.println("執(zhí)行不到了");//執(zhí)行不到此行代碼
 
 }

}

/**
 * 自定義異常
 */
class NegativeException extends ArithmeticException{
 public NegativeException() {
 }
 public NegativeException(String msg) {
 super(msg);
 }
}

interface AA{
 public abstract void method();
}

class Calc implements AA{
 //ArithmeticException其實(shí)為運(yùn)行時(shí)異常(RuntimeException),即使不進(jìn)行throws聲明,也可以通過(guò)編譯
 public int run(int m,int n)throws ArithmeticException,NegativeException{
 if(n==0){
  throw new ArithmeticException("除數(shù)不能為0");
 }else if(n<0){
  throw new NegativeException("除數(shù)不能為負(fù)數(shù)");
 }
 int s = m/n;
 return s ;
 }

 @Override
 public void method() {
 try {
  int p = 4/0;
 } catch (ArithmeticException e) {
  e.printStackTrace();
  throw new RuntimeException();//將異常繼續(xù)拋出為運(yùn)行時(shí)異常
 }
 }
}


感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 手寫(xiě)redis@Cacheable注解?支持過(guò)期時(shí)間設(shè)置方式

    手寫(xiě)redis@Cacheable注解?支持過(guò)期時(shí)間設(shè)置方式

    這篇文章主要介紹了手寫(xiě)redis@Cacheable注解?支持過(guò)期時(shí)間設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解使用Mybatis-plus + velocity模板生成自定義的代碼

    詳解使用Mybatis-plus + velocity模板生成自定義的代碼

    這篇文章主要介紹了詳解使用Mybatis-plus + velocity模板生成自定義的代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 詳談Jedis連接池的使用

    詳談Jedis連接池的使用

    下面小編就為大家?guī)?lái)一篇詳談Jedis連接池的使用。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 基于mybatis中test條件中單引號(hào)雙引號(hào)的問(wèn)題

    基于mybatis中test條件中單引號(hào)雙引號(hào)的問(wèn)題

    這篇文章主要介紹了基于mybatis中test條件中單引號(hào)雙引號(hào)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java之如何截取視頻第一幀

    Java之如何截取視頻第一幀

    這篇文章主要介紹了Java之如何截取視頻第一幀問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • spring?boot?使用Mybatis-plus查詢方法解析

    spring?boot?使用Mybatis-plus查詢方法解析

    這篇文章主要介紹了spring?boot?使用Mybatis-plus查詢方法解析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • JavaSE基礎(chǔ)之反射機(jī)制(反射Class)詳解

    JavaSE基礎(chǔ)之反射機(jī)制(反射Class)詳解

    反射機(jī)制有什么用?通過(guò)java語(yǔ)言中的反射機(jī)制可以操作字節(jié)碼文件,可以讀和修改字節(jié)碼文件。所以本文將為大家講講反射機(jī)制的使用,需要的可以參考一下
    2022-09-09
  • SpringBoot項(xiàng)目中忽略某屬性返回?cái)?shù)據(jù)給前端

    SpringBoot項(xiàng)目中忽略某屬性返回?cái)?shù)據(jù)給前端

    在Spring Boot中,保護(hù)敏感信息和減少數(shù)據(jù)傳輸是很重要的,我們可以使用多種方法來(lái)忽略返回?cái)?shù)據(jù)中的字段,無(wú)論是使用@JsonIgnore注解、Projection投影、@JsonIgnoreProperties注解還是自定義序列化器,都能達(dá)到我們的目的,在實(shí)際應(yīng)用中,根據(jù)具體場(chǎng)景和需求選擇合適的方法
    2024-05-05
  • Springboot中的默認(rèn)日志框架配置詳解

    Springboot中的默認(rèn)日志框架配置詳解

    這篇文章主要介紹了Springboot中的默認(rèn)日志框架配置詳解,spring boot日志默認(rèn)會(huì)輸出到控制臺(tái),所以并不需要我們做過(guò)多配置,但不過(guò)不喜歡控制臺(tái)默認(rèn)日志格式,則可以使用logging.pattern.console屬性配置,需要的朋友可以參考下
    2023-09-09
  • 詳述IntelliJ IDEA遠(yuǎn)程調(diào)試Tomcat的方法(圖文)

    詳述IntelliJ IDEA遠(yuǎn)程調(diào)試Tomcat的方法(圖文)

    本篇文章主要介紹了詳述IntelliJ IDEA遠(yuǎn)程調(diào)試Tomcat的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12

最新評(píng)論

太和县| 林周县| 睢宁县| 永登县| 渝北区| 全南县| 西藏| 通山县| 金平| 龙胜| 扎兰屯市| 吐鲁番市| 永吉县| 龙南县| 三原县| 峨山| 红桥区| 旌德县| 安吉县| 林口县| 于都县| 阳泉市| 泰兴市| 邵武市| 淅川县| 太和县| 潞城市| 阜新| 武乡县| 黄平县| 乳山市| 富锦市| 大同县| 大足县| 梁山县| 凤台县| 廊坊市| 天水市| 青海省| 永顺县| 石景山区|