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

JAVA異常和自定義異常處理方式

 更新時間:2023年09月21日 14:53:55   作者:珍愛生命遠(yuǎn)離IT!  
這篇文章主要介紹了JAVA異常和自定義異常處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

廢話前言

作為一個碼農(nóng)想必對異常這一塊滴已經(jīng)是相當(dāng)熟悉了就是我們常說的try/catch/finally嗎,然后拋出捕獲的異常信息,那么當(dāng)我們在開發(fā)中有些異常需要我們給出特定的提示統(tǒng)一對異常進(jìn)行處理展示可能就會用到自定義異常。

第一:先說一下平時常用常見的異常

(1)運(yùn)行時異常(checked exception)

繼承自java.lang. RuntimeException類

常見5種:

  • ClassCastException(類型轉(zhuǎn)換異常)
  • IndexOutOfBoundsException(數(shù)組越界)
  • NullPointerException(空指針)
  • ArrayStoreException(數(shù)據(jù)存儲異常,操作數(shù)組時類型不一致)
  • BufferOverflowException(IO操作的異常)

(2)非運(yùn)行時異常(unchecked exception)

繼承自java.lang.Exception類

常見:

Java.lang.ClassNotFoundException
Java.lang.NoSuchMetodException
java.io.IOException

先給出語法:

try{
//try塊中放可能發(fā)生異常的代碼。
//如果執(zhí)行完try且不發(fā)生異常,則接著去執(zhí)行finally塊和finally后面的代碼(如果有的話)。
//如果發(fā)生異常,則嘗試去匹配catch塊。
}catch(SQLException SQLexception){
//每一個catch塊用于捕獲并處理一個特定的異常,或者這異常類型的子類。Java7中可以將多個異常聲明在一個catch中。
//catch后面的括號定義了異常類型和異常參數(shù)。如果異常與之匹配且是最先匹配到的,則虛擬機(jī)將使用這個catch塊來處理異常。
//在catch塊中可以使用這個塊的異常參數(shù)來獲取異常的相關(guān)信息。異常參數(shù)是這個catch塊中的局部變量,其它塊不能訪問。
//如果當(dāng)前try塊中發(fā)生的異常在后續(xù)的所有catch中都沒捕獲到,則先去執(zhí)行finally,然后到這個函數(shù)的外部caller中去匹配異常處理器。
//如果try中沒有發(fā)生異常,則所有的catch塊將被忽略。
}catch(Exception exception){
//…
}finally{
//finally塊通常是可選的。
//無論異常是否發(fā)生,異常是否匹配被處理,finally都會執(zhí)行。
//一個try至少要有一個catch塊,否則, 至少要有1個finally塊。但是finally不是用來處理異常的,finally不會捕獲異常。
//finally主要做一些清理工作,如流的關(guān)閉,數(shù)據(jù)庫連接的關(guān)閉等。
}

在這里插入圖片描述

代碼例子:

public class Class1 {
	public static void main(String[] args) throws Exception {
		try {
			List<String> list = new ArrayList<String>();
			Class2 c = new Class2();
			c.aa(list);
			System.out.println("打印");
		}catch(Exception e) {
			System.out.println(">>>>>>>>>>>main");
			e.printStackTrace();
		}finally {
			System.out.println("main finally");
		}
	}
}
public class Class2 {
	public String aa(List<String> list) throws Exception{
		try {
			list.get(10);
		}catch(Exception e) {
			System.out.println(">>>>>>class2 aa="+e.getMessage());
			e.printStackTrace();
			throw e; //必須throw調(diào)用方法還會停止向下運(yùn)行,并被調(diào)用方法接住并拋出
		}finally {
			System.out.println("finally");
		}
		return null;
	}
}

在這里插入圖片描述

第二:說一下我用到的自定義異常

自定義異常的好處是什么?

(1)統(tǒng)一了對外異常展示的方式給前臺或者各個服務(wù)接口

(2)使用自定義異常繼承相關(guān)的異常來拋出處理后的異常信息可以隱藏底層的異常,這樣更安全,異常信息也更加的直觀

我是如何在項(xiàng)目中使用的場景?

直接上代碼

一:自定義異常類

public class ExceptionMessage  extends Exception {
    public ExceptionMessage(String message) {
        super(message);
    }
}

二:自定義異常處理類

@RestControllerAdvice
public class MyExceptionHandler {
    @ExceptionHandler(ExceptionMessage.class)
    public String handlerMyException(ExceptionMessage ex) {
    //BaseRspsMsg自定義錯誤代碼
    BaseRspsMsg baseRspsMsg = 	BaseRspsMsg.build(BaseRspsMsg.BIZ_CODE_00001_FAILE,ex.getMessage());
        return baseRspsMsg.toJsonStr();
    }
}

三:代碼調(diào)用

boolean isTrue = 處理邏輯是否符合;

if (!isTrue) {
	errDesc = "ERROR_異常信息描述!" ;
	throw new ExceptionMessage(errDesc);
}

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java處理異常2種機(jī)制關(guān)鍵字區(qū)別解析

    Java處理異常2種機(jī)制關(guān)鍵字區(qū)別解析

    這篇文章主要介紹了java處理異常2種機(jī)制關(guān)鍵字區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Java之IO流面試題案例講解

    Java之IO流面試題案例講解

    這篇文章主要介紹了Java之IO流案例講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Java中對象數(shù)組的使用方法詳解

    Java中對象數(shù)組的使用方法詳解

    這篇文章主要介紹了Java中對象數(shù)組的使用方法,結(jié)合實(shí)例形式分析了java對象數(shù)組的功能、定義、初始化與相關(guān)使用技巧,需要的朋友可以參考下
    2019-08-08
  • java?hutool工具類處理JSON的使用方法

    java?hutool工具類處理JSON的使用方法

    hutool是一個java基礎(chǔ)工具類,該工具類經(jīng)過長期的發(fā)展,API已經(jīng)非常齊全,下面這篇文章主要給大家介紹了關(guān)于java?hutool工具類處理JSON的使用方法,需要的朋友可以參考下
    2024-04-04
  • 編程入門:掌握J(rèn)ava運(yùn)算符技巧

    編程入門:掌握J(rèn)ava運(yùn)算符技巧

    掌握J(rèn)ava運(yùn)算符技巧,能讓你的編程之旅輕松許多,本指南將帶你深入了解如何巧妙地使用這些強(qiáng)大的工具,讓代碼不僅高效,還充滿樂趣,跟著我們一起,讓你的Java代碼在運(yùn)算符的魔法下煥發(fā)新生!
    2023-12-12
  • 使用Servlet處理一個上傳的文件

    使用Servlet處理一個上傳的文件

    今天小編就為大家分享一篇關(guān)于使用Servlet處理一個上傳的文件,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 解決maven項(xiàng)目依賴加載不出來的問題

    解決maven項(xiàng)目依賴加載不出來的問題

    文章介紹了如何安裝和配置Maven,包括設(shè)置環(huán)境變量、修改倉庫位置、驗(yàn)證安裝、安裝本地JAR包到倉庫以及在IntelliJ IDEA中配置Maven
    2025-11-11
  • Java實(shí)現(xiàn)PDF在線預(yù)覽功能(四種方式)

    Java實(shí)現(xiàn)PDF在線預(yù)覽功能(四種方式)

    這篇文章主要介紹了Java實(shí)現(xiàn)PDF在線預(yù)覽功能的四種方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 用Java實(shí)現(xiàn)OCR功能揭秘

    用Java實(shí)現(xiàn)OCR功能揭秘

    想知道如何用Java實(shí)現(xiàn)OCR功能嗎?本指南將揭秘這一神秘技術(shù),讓你輕松掌握OCR的實(shí)現(xiàn)方法,無論是想提升技能還是解決問題,這篇指南都能幫助你一臂之力,需要的朋友可以參考下
    2023-12-12
  • echarts圖表導(dǎo)出excel示例

    echarts圖表導(dǎo)出excel示例

    這篇文章主要介紹了echarts圖表導(dǎo)出excel示例,需要的朋友可以參考下
    2014-04-04

最新評論

宁夏| 忻州市| 冀州市| 龙岩市| 阿巴嘎旗| 大石桥市| 隆昌县| 广饶县| 仪征市| 哈尔滨市| 蒲江县| 响水县| 宜宾市| 朝阳市| 房产| 吴江市| 清水河县| 巴塘县| 武邑县| 桐乡市| 南漳县| 湖北省| 宝应县| 探索| 河津市| 永德县| 沧源| 天全县| 岐山县| 章丘市| 民丰县| 盘山县| 桐城市| 康乐县| 资溪县| 西充县| 龙门县| 屏东市| 丰宁| 靖江市| 运城市|