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

淺談java異常處理(父子異常的處理)

 更新時間:2016年09月07日 09:57:29   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談java異常處理(父子異常的處理)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

我當(dāng)初學(xué)java異常處理的時候,對于父子異常的處理,我記得幾句話“子類方法只能拋出父類方法所拋出的異?;蛘呤瞧渥赢惓?,子類構(gòu)造器必須要拋出父類構(gòu)造器的異常或者其父異?!薄D莻€時候還不知道子類方法為什么要這樣子拋出異常,后來通過學(xué)習(xí)《Thinking in Java》,我才明白其中的道理,現(xiàn)在我再來溫習(xí)一下。

一、子類方法只能拋出父類方法的異常或者是其子異常

對于這種限制,主要是因為子類在做向上轉(zhuǎn)型的時候,不能正確地捕獲異常

package thinkinginjava;

public abstract class InningDemo1 {
  public void walk() throws BaseException{}
  public abstract void sing() throws BaseException;
}

class BaseException extends Exception{}
class SubException1 extends BaseException{}
class CupException extends Exception{}
package thinkinginjava;

public interface OtherFunction {
  public void task() throws RuntimeException;
} 
package thinkinginjava;

public class SubInningDemo1 extends InningDemo1 implements OtherFunction{
  //子類方法可以拋出父類方法的異常
  @Override
  public void walk() throws BaseException{}
  
  //但不能拋出父類中沒有的異常,否則編譯會出錯
  //public void walk() throws Exception{}
  
  //子類方法可以拋出父類方法的子異常
  @Override
  public void sing() throws SubException1{}
  
  //當(dāng)實現(xiàn)的接口和父類中的方法都有異常時,可以選擇不拋出異常
  public void task(){}

}

就拿這個例子來說,假如子類中有這方法 public void walk() throws CupException{},拋出了父類方法沒有的異常,我們使用父類的引用指向子類

public void f(){

    InningDemo1 inn = new SubInningDemo1();

    inn.walk() ;//父類調(diào)用walk()方法時,并不知道它會拋出CupException,從而f()方法不知如何捕獲異常。因此在編譯期就要防止子類方法亂拋異常。

  }

從上面的例子中,我們也可以看到,子類方法可以不拋出異常

二、子類構(gòu)造器必須要拋出父類構(gòu)造器的異?;蛘咂涓府惓?/strong>

這是因為子類構(gòu)造器中默認(rèn)添加了父類的構(gòu)造器

package thinkinginjava;

public abstract class InningDemo2 {
  public InningDemo2() throws SubException{
    
  }
}

class FatherException extends Exception{}
class SubException extends FatherException{}
class PenException extends Exception{}
package thinkinginjava;

public class SubInningDemo2 extends InningDemo2{
  public SubInningDemo2() throws FatherException {
    //子類構(gòu)造器中默認(rèn)添加了父類的構(gòu)造器,所以需要拋出父類的異常或者其父異常
    //super();
  }
}

三、異常丟失

1、在finally中拋出異常,可能會之前拋出的異常丟失

package thinkinginjava;

public class FinallyException {
  public static void main(String[] args){
    try{
      try{
        throw new RedException();
      }finally{
        //把上一個異常覆蓋掉
        throw new BlueException();
      }
    }catch(Exception e){
      System.out.println(e);
    }
  }
}

class RedException extends Exception{}
class BlueException extends Exception{}

運行結(jié)果:thinkinginjava.BlueException

2、在finally中使用return,不會拋出異常

package thinkinginjava;

public class ReturnException {
  public static void main(String[] args){
    try{
      throw new Exception();
    }finally{
      return;
    }
  }
}

以上代碼我們看到它拋出了異常,但運行時不會有任何輸出

以上這篇淺談java異常處理(父子異常的處理)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java base64編碼、解碼的三種方式總結(jié)

    java base64編碼、解碼的三種方式總結(jié)

    這篇文章主要介紹了java base64編碼、解碼的三種方式,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-10-10
  • Java內(nèi)存模型(JMM)及happens-before原理

    Java內(nèi)存模型(JMM)及happens-before原理

    這篇文章主要介紹了java內(nèi)存模型(JMM)及happens-before原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • java操作ftp下載文件示例

    java操作ftp下載文件示例

    這篇文章主要介紹了java操作ftp下載文件的示例,需要的朋友可以參考下
    2014-02-02
  • 使用IDEA進行安卓開發(fā)的詳細(xì)圖文教程

    使用IDEA進行安卓開發(fā)的詳細(xì)圖文教程

    安卓開發(fā)本身就是Java開發(fā)的一個分支,我們要確保計算機已經(jīng)安裝好JDK并做好了相關(guān)的配置,下面這篇文章主要給大家介紹了關(guān)于如何使用IDEA進行安卓開發(fā)的詳細(xì)圖文教程,需要的朋友可以參考下
    2023-04-04
  • 解決運行jar包出錯:ClassNotFoundException問題

    解決運行jar包出錯:ClassNotFoundException問題

    這篇文章主要介紹了解決運行jar包出錯:ClassNotFoundException問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java結(jié)合JS實現(xiàn)URL編碼與解碼

    Java結(jié)合JS實現(xiàn)URL編碼與解碼

    這篇文章介紹了Java結(jié)合JS實現(xiàn)URL編碼與解碼的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • JavaWeb項目音頻資源播放實現(xiàn)方法詳解

    JavaWeb項目音頻資源播放實現(xiàn)方法詳解

    這篇文章主要介紹了JavaWeb項目音頻資源播放實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • 淺析springboot通過面向接口編程對控制反轉(zhuǎn)IOC的理解

    淺析springboot通過面向接口編程對控制反轉(zhuǎn)IOC的理解

    這篇文章主要介紹了springboot通過面向接口編程對控制反轉(zhuǎn)IOC的理解,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-08-08
  • 解決Process.getInputStream()阻塞的問題

    解決Process.getInputStream()阻塞的問題

    這篇文章主要介紹了解決Process.getInputStream()阻塞的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • springboot如何靜態(tài)加載@configurationProperties

    springboot如何靜態(tài)加載@configurationProperties

    這篇文章主要介紹了springboot如何靜態(tài)加載@configurationProperties,本文一個錯誤案例和成功案例結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07

最新評論

桂平市| 洛阳市| 明星| 曲麻莱县| 社旗县| 迭部县| 红桥区| 安达市| 哈巴河县| 宜丰县| 渑池县| 双城市| 沽源县| 宝兴县| 柘荣县| 桦甸市| 剑阁县| 泰兴市| 乌鲁木齐县| 神木县| 尼木县| 缙云县| 铜川市| 新郑市| 韩城市| 丰镇市| 齐河县| 林周县| 迭部县| 友谊县| 八宿县| 巨鹿县| 赤峰市| 金湖县| 开阳县| 太保市| 静海县| 衡水市| 霍邱县| 南京市| 清丰县|