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

Java異常處理原理與用法實(shí)例分析

 更新時(shí)間:2020年04月15日 09:29:47   作者:隨風(fēng)行云  
這篇文章主要介紹了Java異常處理原理與用法,結(jié)合實(shí)例形式分析了Java異常處理相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Java異常處理原理與用法。分享給大家供大家參考,具體如下:

本文內(nèi)容:

  • 異常的介紹
  • 處理異常
  • 斷言

 首發(fā)日期:2018-03-26


異常:

  • 異常是程序運(yùn)行中發(fā)生的錯(cuò)誤,比較常見的比如“除零異?!?,如果一個(gè)除數(shù)為零,那么會(huì)發(fā)生這個(gè)異常
  • 異常會(huì)影響程序的正常運(yùn)行,所以我們需要處理異常。
  • image
  • 所有的異常類是從 java.lang.Exception 類繼承的子類。 異常類有兩個(gè)主要的子類:IOException 類和 RuntimeException 類。

常見異常:

算術(shù)異常類:ArithmeticExecption

空指針異常類:NullPointerException

類型強(qiáng)制轉(zhuǎn)換異常:ClassCastException

數(shù)組下標(biāo)越界異常:ArrayIndexOutOfBoundsException

輸入輸出異常:IOException


處理異常:

  • 異常的捕獲:try…catch…finally

    • 格式:image
    • try代碼塊:里面放的是異??赡馨l(fā)生的代碼
    • catch代碼塊【可以有多個(gè)】:進(jìn)行捕獲異常的操作
      • e是捕獲的異常類對象,直接打印會(huì)得到字符串結(jié)果(包含異常的線程、類型、位置)
      • e.getMessage():只返回異常的類型+原因
      • e.printStackTrace(): 異常的類型+原因+位置
      • e.toString():異常的類型+原因
    • finally【可選】:放的是無論發(fā)生異常與否都會(huì)執(zhí)行的代碼
    • 異常類如果無法確定類型而準(zhǔn)確捕獲時(shí),可以捕獲成所有異常類的父類Exception
    • 當(dāng)異常捕獲成功后,try…catch…finally代碼塊后面的代碼可以執(zhí)行成功。

image

image

public class Demo {

  public static void main(String[] args) {
//    int a=10/0;
    try{
      int a=10/0;
    }catch(ArithmeticException e) {
      System.out.println("run in ArithmeticException "+e);
      //run in ArithmeticException java.lang.ArithmeticException: / by zero
    }
    catch (Exception e) {
      System.out.println(e);
    }finally {
      System.out.println("最終執(zhí)行的");//最終執(zhí)行的
    }

  }

}
  • 異常的聲明:

throws用于聲明異常,聲明函數(shù)可能發(fā)生的異常?!井?dāng)函數(shù)中有throw來拋出異常時(shí),函數(shù)頭必須使用throws聲明異?!?/p>

  • 拋出異常:

throw用于手動(dòng)拋出異常,可以拋出自定義異常信息:throw 異常類型(異常信息)

public class Demo2 {
  
  static int div(int a,int b) throws ArithmeticException{
    if (b==0){
      throw new ArithmeticException("發(fā)生除零異常了!");
    }
    return a/b;
  }
  
  public static void main(String args[]) {
    try {
      System.out.println(div(2,0));
    }catch(ArithmeticException e) {
      System.out.println(e.getMessage());//發(fā)生除零異常了!
    }finally {
      System.out.println("in finally");//in finally
    }
    System.out.println("after finally");//after finally
    
  }
}

一般對于不想在函數(shù)中處理異常時(shí),一般采用異常拋出處理(throw throws);否則使用try…catch…finally捕獲異常。

自定義異常:

有時(shí)候沒有定義我們想要的異常(比如我們MYSQL連接異常),那么我們可以自定義異常。

  • 所有異常都必須是 Throwable 的子類。
  • 如果希望寫一個(gè)檢查性異常類(是一些編譯器會(huì)幫忙檢查的異常),則需要繼承 Exception 類。
  • 如果你想寫一個(gè)運(yùn)行時(shí)異常類(異常比如說,數(shù)組下標(biāo)越界和訪問空指針異常),那么需要繼承 RuntimeException 類【這種異常類不需要throws】。
class MyException extends Exception{
  public MyException() {}
  public MyException(String msg) {
    super(msg);
  }
}

public class Demo3 {
  
  static int div(int a,int b) throws MyException {
    if (b==0){
      throw new MyException("發(fā)生異常了!");
    }
    return a/b;
  }
  
  public static void main(String args[]) {
    try {
      System.out.println(div(2,0));
    }catch(Exception e) {
      System.out.println(e);//異常.MyException: 發(fā)生除零異常了!
    }
    
  }
}

斷言:

  • assertion(斷言)在軟件開發(fā)中是一種常用的調(diào)試方式
  • 斷言一般是判斷條件是否符合來決定程序是否繼續(xù)執(zhí)行的?!颈热?,你要吃飯,那么assert一下飯到手了沒有,不然你可能會(huì)吃空氣】
  • 斷言的開啟:eclipse、myeclipse的assert默認(rèn)是關(guān)閉,想開啟assert需要在設(shè)置perferences-》Java-》installed jres中配置一下虛擬機(jī)參數(shù),配置成-ea或者-enableassertionsimage
  • Java中使用assert來定義斷言:格式:assert [boolean 表達(dá)式]
public class Demo {

  public static void main(String[] args) {
    Boolean food=false;
    System.out.println("準(zhǔn)備開始吃飯");
    assert food;
    
    System.out.println("飯來了");
    

  }

}

image

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 解決Spring Security的權(quán)限配置不生效問題

    解決Spring Security的權(quán)限配置不生效問題

    這篇文章主要介紹了解決Spring Security的權(quán)限配置不生效問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java計(jì)算日期相差天數(shù)的4種簡單方法舉例

    java計(jì)算日期相差天數(shù)的4種簡單方法舉例

    最近在工作中遇見一個(gè)小需求,要求計(jì)算兩個(gè)日期之間相差幾天,下面這篇文章主要給大家介紹了關(guān)于java計(jì)算日期相差天數(shù)的4種簡單方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Java?CopyOnWriteArrayList源碼超詳細(xì)分析

    Java?CopyOnWriteArrayList源碼超詳細(xì)分析

    為了將讀取的性能發(fā)揮到極致,jdk中提供了CopyOnWriteArrayList類,下面這篇文章主要給大家介紹了關(guān)于java中CopyOnWriteArrayList源碼解析的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 如何用Dos命令運(yùn)行Java版HelloWorld你知道嗎

    如何用Dos命令運(yùn)行Java版HelloWorld你知道嗎

    這篇文章主要介紹了在dos窗口中編譯和運(yùn)行java文件的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Spring Boot 入門教程

    Spring Boot 入門教程

    相信很多人都接觸spring框架很長時(shí)間了,每次搭建spring框架的時(shí)候都需要配置好多的jar、xml,做很多繁瑣重復(fù)的配置,稍微不留神就會(huì)出現(xiàn)各種各樣的問題。今天給大家介紹一下如何利用Spring Boot快速的搭建一個(gè)簡單的web應(yīng)用
    2017-03-03
  • 詳解如何在SpringBoot中優(yōu)雅地重試調(diào)用第三方API

    詳解如何在SpringBoot中優(yōu)雅地重試調(diào)用第三方API

    在實(shí)際的應(yīng)用中,我們經(jīng)常需要調(diào)用第三方API來獲取數(shù)據(jù)或執(zhí)行某些操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • java實(shí)現(xiàn)任意矩陣Strassen算法

    java實(shí)現(xiàn)任意矩陣Strassen算法

    這篇文章主要介紹了java實(shí)現(xiàn)任意矩陣Strassen算法的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • 關(guān)于Spring工廠方法注入屬性方式

    關(guān)于Spring工廠方法注入屬性方式

    這篇文章主要介紹了關(guān)于Spring工廠方法注入屬性方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java的MyBatis框架中對數(shù)據(jù)庫進(jìn)行動(dòng)態(tài)SQL查詢的教程

    Java的MyBatis框架中對數(shù)據(jù)庫進(jìn)行動(dòng)態(tài)SQL查詢的教程

    這篇文章主要介紹了Java的MyBatis框架中對數(shù)據(jù)庫進(jìn)行動(dòng)態(tài)SQL查詢的教程,講解了MyBatis中一些控制查詢流程的常用語句,需要的朋友可以參考下
    2016-04-04
  • RocketMQ事務(wù)消息使用與原理詳解

    RocketMQ事務(wù)消息使用與原理詳解

    這篇文章主要為大家介紹了RocketMQ事務(wù)消息的實(shí)現(xiàn)原理,在分布式事務(wù)解決方案中,事務(wù)消息也是一個(gè)不錯(cuò)的解決方案,本篇文章將圍繞RocketMQ的事務(wù)消息實(shí)現(xiàn)展開描述,需要的朋友可以參考下
    2023-07-07

最新評論

泸州市| 博野县| 赫章县| 郎溪县| 高淳县| 晋州市| 龙里县| 洛浦县| 上饶市| 太保市| 泰安市| 乐山市| 县级市| 雅安市| 海林市| 昌宁县| 辽阳县| 留坝县| 泰安市| 永康市| 瑞丽市| 拜泉县| 腾冲县| 盘山县| 望谟县| 五大连池市| 南京市| 宜黄县| 绩溪县| 宁明县| 陆河县| 德江县| 祁连县| 正宁县| 富阳市| 桐柏县| 云阳县| 昌邑市| 双峰县| 赤峰市| 教育|