1. 程式人生 > >深入java 自定義異常以及常用

深入java 自定義異常以及常用

上一篇文章總結了java的異常用法,常見得java異常以及例子說明。這一篇文章我們繼續深入,瞭解自定義java異常以及常用的異常記錄工具。更多的原始碼請訪問我的github:https://github.com/yangsheng20080808/deepIntoJava

原創不易,轉載請宣告出處。

本文分為2大部分

  • 為什麼沒必要自定義編譯異常CheckedException
  • 自定義java異常
  • 常用的異常記錄工具

為什麼沒必要自定義編譯異常CheckedException

當我們開始熟練的開始使用java異常的時候,其實這個時候,我們還可以定義自己的異常,我們最好只定義繼承Exception和RuntimeException(待會跟大家說一下為什麼也不需要去繼承RuntimeException),當然,編譯異常你也可以繼承,但是你繼承了編譯異常也沒有用呀

,因為編譯異常,是我們丟擲的父類物件,捕捉的時候只會匹配他和他的父類,不會匹配他的子類:
舉例說明吧:
這裡寫圖片描述
大家應該看得很清楚,MyException(子)是FileNotFoundException(父)的子類,但是我們在filter = new FileReader(path);的時候,丟擲的是MyException的父類FileNotFoundException的物件,大家應該都知道強制向下造型是有風險的,當然,JVM這裡當然也不可能讓你向下造型去匹配。
我們新增獲取的目標:
這裡寫圖片描述
執行結果:
這裡寫圖片描述
我們只匹配上了我們的父類物件。而沒有匹配上我們的MyException。

自定義java異常

為什麼要自定義java異常
我覺得是從程式的健壯性和友好性出發的,我們自定義的異常,可以在程式執行的時候給我們使用者更好的異常提示,而且這些異常是符合我們自己定義的場景。
直接舉例說明(我覺得真的有用的繼承是Exception和RuntimeException:但是一般RuntimeException是程式在執行的時候:要麼是系統異常。無法處理。例如網路問題。我們根本沒有辦法處理。那有什麼必要去處理呢?!!!):
最後:我們只有Exception和Throwable是有必要去複寫的。


這裡寫圖片描述
執行結果:
這裡寫圖片描述

常用的日誌記錄工具

我們可以使用一些第三方的日誌工具去記錄程式中出現的異常:
推薦大家幾個工具,具體怎麼使用,以後再單獨寫一篇文章總結:
log4j,log4j2

相關推薦

深入java 定義異常以及常用

上一篇文章總結了java的異常用法,常見得java異常以及例子說明。這一篇文章我們繼續深入,瞭解自定義java異常以及常用的異常記錄工具。更多的原始碼請訪問我的github:https://github.com/yangsheng20080808/deepIntoJava

java定義異常以及throw和throws關鍵字

java中內建了很多可能在程式設計時出現的大部分異常。除此之外,使用者可以使用一個類繼承Exception類即可繼承自定義類異常。 在程式中自定義類,大體上分為以下幾個步驟: 建立自定義異常類 在方法中通過throw關鍵字丟擲異常物件。 如果在當前丟擲異常的方法中處理異常,

java定義異常以及全域性log列印

import lombok.Data; /** * @author 01369526 * */ @Data @SuppressWarnings("serial") public class MyException extends RuntimeExcep

Java定義異常

trace tex logs fin rate cat java自定義異常 leg pan package cn.Douzi.Lab7_4; public class Triangle { int a, b, c; publ

java定義異常(列舉)

public class SimpleException extends RuntimeException { private String msg ; private StatusCode statusCode ; public SimpleEx

java定義異常處理類

/*** * 為什麼使用自定義異常? * 更加精確定位具體異常資訊 * * 繼承RuntimeException,實現RuntimeException的所有構造方法,就是一種自定義異常類 * */ public class ServiceException extends Runti

Java定義異常異常使用最佳實踐

異常的分類 1. 非執行時異常(Checked Exception)         Java中凡是繼承自Exception但不是繼承自RuntimeException的類都是非執行時異常。 2. 執行時異常(Runtime Exception/Unchecked Exce

摘自《java 2 實用教程》 java定義異常

class BankException extends Exception { String message; public BankException(int m, int n) { message = "入賬資金" + m + "是負數或者支出" + n +

java定義註解以及原理

import java.util.Arrays; import java.util.List; import com.puhui.flowplatform.manage.filter.RightFilter; import org.springframework.aop.BeforeAdvice; impo

Java定義異常(優雅的處理異常)

(本文較長,精華部分直接下拉)在複雜業務環境下,java自帶的異常可能滿足不了我們業務的需求, 這個時候我們可以自定義異常來進行對業務異常的處理;首先,我們先對異常進行基本的解釋:Throwable是所有Java程式中錯誤處理的父類 ,有兩種子類:Error和Exceptio

springboot下全域性異常處理和定義異常以及定義返回值

1.介紹    全域性異常處理,是mvc的一個新特性,避免大量的重複程式碼    自定義異常 , 方便使用,丟擲自己定義好的異常,配合全域性異常處理使用,效果更佳    自定義返回值,類似異常,返回自己定義的返回值 2.全域性異常處理重點知識 1. 新建一

Java定義異常理解

前言:看了許多部落格和書,都對自定異常一筆帶過,總讓人感覺莫名奇妙,一直在問自己一個問題,我們能很好的解決異常就很不錯了,為什麼還要自己自定義異常,讓自己去自找麻煩呢?後來我才理解自定義異常有自己的妙用。 Java錯誤與異常的基本概念: 1.java中異常均繼承自Throw

Java定義註解以及模擬單元測試

一、自定義註解1.編寫自定義註解類 @MyTestpackage com.itheima.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; i

java定義異常(runtimeException)

                    Throwable                      /                \              Error             Exception /                   /      

java定義異常

簡單介紹一下java中自定義異常類的使用 背景:這裡我簡單模擬登陸操作,檢測到密碼不正確則丟擲異常 自定義異常類的使用步驟如下: 1、自定義異常類繼承Exception類 /** * 自定義異常類 */ public class MyExcept

Java 定義異常

/*  * 自定義異常類  * sun提供了很多的異常類給我們用於描述程式中各種的不正常情況,但是sun給我提

Java IO流中的異常處理以及定義異常例項

文章目錄 異常 自定義異常例項 finally中特殊情況例項 異常 1、 Throwable類  a) 嚴重問題:Error,比如說記憶體不夠,一般程式中不進

Java IO流中的異常處理以及定義異常例項

異常 1、 Throwable類  a) 嚴重問題:Error,比如說記憶體不夠,一般程式中不進行處理  b) 問題:Exception   i. 編譯期問題:不是RunTimeException的異常,不處理編譯不能通過,因此必須處理   ii. 執行期問題

課堂動手動腦驗證以及定義異常類實現對異常處理——java異常

異常(exception):發生在程式執行期間,表明出現了一個非法執行的情況。許多JDK中的方法在檢測到非法情況時,都會丟擲一個異常物件。例如:陣列越界和被0除。 程式碼驗證: package test; import javax.swing.*; class AboutException { p

java基礎--定義異常使用練習

heron dex oat try ssa color epo 原因 str 個人認為首先要知道兩點: 1.異常的父類為 Throwable 2.錯誤、異常總共分為三類,但需要程序處理的只有一種 現在寫一個小例子: 需求:敵我雙方各自英雄進行攻擊,如果某方生命值達到0