java自定義異常,java自定義異常處理

本文目錄一覽:

java中自定義異常為何要繼承exception類

java.lang.Exception類是Java中所有異常的直接或間接父類。即Exception類是所有異常的根類。

1、異常的分類:

① 非運行時異常(Checked Exception)

② 運行時異常(Runtime Exception/Unchecked Exception)

public class Exception

extends Throwable

Exception 類及其子類是 Throwable 的一種形式,它指出了合理的應用程序想要捕獲的條件。

public class RuntimeException

extends Exception

RuntimeException 是那些可能在 Java 虛擬機正常運行期間拋出的異常的超類。

可能在執行方法期間拋出但未被捕獲的 RuntimeException 的任何子類都無需在 throws 子句中進行聲明。

a) RuntimeException類直接繼承自Exception類,稱為運行時異常。Java中所有的運行時異常都直接或間接的繼承自RuntimeException.

Java中所有的異常類都直接或間接的繼承自Exception。

2、異常的處理:

對應非運行時異常,必須對其進行處理。處理方式有兩種:

使用try…catch…finally語句塊進行捕獲

在產生異常的方法所在的方法聲明throws Exception

對於運行時異常,可以不對其進行處理,也可以對其進行處理。一般情況下都不對其進行處理。

3、捕獲異常:

try {

FileInputStream fs = new FileInputStream(“D:/temp/a.txt”);

} catch (FileNotFoundException e) {

System.out.println(“catch…”);

e.printStackTrace();

} finally{

System.out.println(“finally…”);

}

4、拋出和捕獲異常:

4.1、把異常交給JVM處理:

public class ExceptionTest {

public static void execute() throws Exception {

System.out.println(“execute…”);

throw new Exception();

}

public static void main(String[] args) throws Exception {

execute();

}

}

4.2、或者使用try catch語句塊捕獲異常:

public class ExceptionTest {

public static void execute() throws Exception {

System.out.println(“execute…”);

throw new Exception();

}

public static void main(String[] args) {

try {

execute();

} catch (Exception e1) {

e1.printStackTrace();

}

}

}

5、自定義異常:

自定義異常通常是定義一個繼承自Exception類的子類。一般情況下我們都會直接繼承自Exception類,而不會繼承某個運行時的異常類。

5.1、創建自定義異常:

public class MyException extends Exception{

public MyException(){

super();

}

public MyException(String msg){

super(msg);

}

}

5.2、在類中使用異常:

public class ExceptionTest {

public static void execute(String a) throws MyException {

System.out.println(“execute…”);

if(“true”.equals(a)){

throw new MyException(“參數不能為 true”);

}

}

}

5.3、捕獲自定義異常:

public static void main(String[] args) throws MyException {

execute(“true”);

}

6、異常使用注意事項:

當使用多個catch語句塊來捕獲異常時,需要將父類的catch語句塊放到子類型的catch塊之後,這樣才能保證後續的catch可能被執行,否則子類型的catch將永遠無法到達,Java編譯器會報編譯錯誤。

如果try語句塊中存在return語句,那麼首先會執行finally語句塊中的代碼,然後才返回。

如果try語句塊中存在System.exit(0)語句,那麼久不會執行finally語句塊的代碼了,因為System.exit(0)會終止當前運行的JVM。程序在JVM終止前結束執行。

java如何自定義一個可捕獲的異常

1)先定義一個類繼承Exception(或者別的RuntimeException等);

2)然後寫個方法可能拋出這個異常,並且什麼情況下會拋出異常;

3)調用這個方法,寫try,catch語句,捕獲這個異常;

小例子,你參考看下:

class UserNotFoundException extends RuntimeException {

public UserNotFoundException() {}

public UserNotFoundException(String message) {

super(message);

}

public void f() throws UserNotFoundException {

throw new UserNotFoundException(“用戶名不對”);

}

public class Exception  {

public static void main(String args[]) {

try {

new UserNotFoundException().f();

} catch (UserNotFoundException e) {

System.out.println(e.getMessage());

}

}

}

java自定義異常問題

class ParameterNumberException extends Exception{

ParameterNumberException(){

super(“參數個數異常!”);}

public String toString(){

return “ParameterNumberException”;}

}

class ParameterFormatException extends Exception{

ParameterFormatException(){

super(“參數格式異常!”);

public String toString(){

return “ParameterFomatException”;}

}

public class NullPointer2 {

public static void main(String args[])throws ParameterNumberException,ParameterFormatException{

try{

if(args.length2)

throw new ParameterNumberException();

else

throw new ParameterFormat();

}

catch(ParameterNumberException e){

System.out.println(e);

e.printStackTrace();}

catch(ParameterFomatException e){

System.out.println(e);

e.printStackTrace();}

}

}

java自定義異常類問題

異常類的理解,個人看法

是不是說輸出異常的信息啊,在自定義類中輸出異常的信息

然後在程序中當判斷到輸入的數據是小於0,調用小於0的異常類里的輸出信息

大於100,就調用大於100的異常類里的輸出信息

java自定義異常類

public void MyException extends Exception{

public MyExceprion(){

System.out.println(“自定義異常”);

}

}

public class Exam{

public static void mul() throws MyException{

if(自己寫條件){

throw new MyException();

}

}

}

這個應該能看懂吧,我只是寫了個結構沒寫完整程序的,你看懂這個就行,定義一個自定義異常,然後在你需要的地方拋出異常,在主方法中調用方法的時候達到一定條件就會拋出異常

java自定義異常類 super() showMessage()

//定義一個自己定義Exception類,名為MyException,然後繼承Exception

class MyException extends Exception{

//重寫構造方法

public MyException(String message){

super(message); //這句話的意思是調用Exception的有參構造方法。

}

}

//運行一下

public class ExceptionDemo{

public static void main(String[] args){

try{

throw new MyException(“我的異常”); //這裡已經發生異常了,我拋出

}catch(MyException e){//這裡寫我們自定義的異常類

System.out.println(e.getMessage());//這句話是調用父類的getMessage方法,將「我的異常」輸出。

}

}

/*public void showMessage(){

System.out.println(msg);

}*/ //這句話就是自定義showMessage方法,輸出e.showMessage();//模仿父類異常,而不是重寫父類異常的getMessage()方法

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/207062.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-08 14:19
下一篇 2024-12-08 14:20

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論