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

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

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

我當初學java異常處理的時候,對于父子異常的處理,我記得幾句話“子類方法只能拋出父類方法所拋出的異常或者是其子異常,子類構造器必須要拋出父類構造器的異?;蛘咂涓府惓!?。那個時候還不知道子類方法為什么要這樣子拋出異常,后來通過學習《Thinking in Java》,我才明白其中的道理,現(xiàn)在我再來溫習一下。

一、子類方法只能拋出父類方法的異?;蛘呤瞧渥赢惓?/strong>

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

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{}
  
  //當實現(xiàn)的接口和父類中的方法都有異常時,可以選擇不拋出異常
  public void task(){}

}

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

public void f(){

    InningDemo1 inn = new SubInningDemo1();

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

  }

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

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

這是因為子類構造器中默認添加了父類的構造器

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 {
    //子類構造器中默認添加了父類的構造器,所以需要拋出父類的異?;蛘咂涓府惓?
    //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{}

運行結果:thinkinginjava.BlueException

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

package thinkinginjava;

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

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

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

相關文章

  • java base64編碼、解碼的三種方式總結

    java base64編碼、解碼的三種方式總結

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

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

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

    java操作ftp下載文件示例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

叶城县| 育儿| 建水县| 龙里县| 时尚| 布拖县| 思南县| 讷河市| 阿鲁科尔沁旗| 伽师县| 桂林市| 淄博市| 诸城市| 曲周县| 九江市| 吉木乃县| 长泰县| 上思县| 乐东| 榕江县| 同仁县| 鄂托克前旗| 依兰县| 东台市| 洪雅县| 驻马店市| 杂多县| 乌海市| 汉沽区| 武邑县| 深水埗区| 东光县| 留坝县| 莱阳市| 调兵山市| 互助| 麦盖提县| 余庆县| 乐平市| 定西市| 达州市|