Java自定义异常–用户定义的异常
时间:2020-02-23 14:36:31 来源:igfitidea点击:
自定义异常或者用户定义的异常在Java应用程序中非常常见。
我们可以轻松地为不同用例创建自定义异常类。
有哪些不同类型的例外?
在Java中,有两类异常:
已检查的异常–这些是可恢复的。
这些是从Exception
类派生的。
例如,IOException和FileNotFoundException是已检查的异常。未检查的异常–这些不可恢复,并且在运行时发生。
这些是从" java.lang.RuntimeException"类派生的。
例如,NullPointerException和IllegalArgumentException是未经检查的异常。
深度阅读:Java中的异常处理。
接下来,让我们在下一部分中查看自定义例外。
Java自定义异常或者用户定义的异常
自定义异常是用户定义的异常。
这些是由程序员专门为那里的应用程序用例编写的。
要创建一个检查的自定义异常,它必须扩展Exception
或者其子类。
未经检查的自定义异常扩展了RuntimeException或者其子类。
所有异常都是Throwable的子级。
在介绍实现部分之前,请注意一些要点。
仅当自定义异常提供了可用异常均不提供的特定用例时,才创建自定义异常。
所有自定义例外都必须遵循标准命名约定。
那是骆驼的情况,以" Exception"一词结尾。在所有情况下都使用重载的构造函数。
1.自定义未经检查的异常
自定义未检查的异常示例如下。
package com.theitroad.java; import java.util.ArrayList; public class CustomExceptions { public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("Monday"); arrayList.add("Tuesday"); arrayList.add("Wednesday"); String day = "Sunday"; if (!arrayList.contains(day)) { try { throw new DayNotAvailableException("Day not available",day); } catch (DayNotAvailableException e) { e.getLocalizedMessage(); e.printStackTrace(); } } } } class DayNotAvailableException extends RuntimeException { private String day; public DayNotAvailableException() { super(); } public DayNotAvailableException(String message, String day) { super(message); this.day = day; } public DayNotAvailableException(String message, String day, Throwable cause) { super(message, cause); this.day = day; } @Override public String toString() { return super.toString(); } @Override public String getMessage() { return super.getMessage() + " for the day :" + day; } @Override public String getLocalizedMessage() { return "The day "+day + " is not available."; } }
Java自定义未经检查的异常
在上面的程序中,当ArrayList中不存在该值时,我们只是抛出一个错误。
在自定义异常中,我们定义了多个构造函数以涵盖不同的情况。
getMessage()和getLocalisedMessage()被重写以提供自定义响应。
2.用户定义的检查异常
这是用户定义的检查异常的简单示例。
我们将扩展Exception类并重写toString()方法。
package com.theitroad.java; public class EmployeeNotFoundException extends Exception { private static final long serialVersionUID = -2872694086602732648L; private int id; EmployeeNotFoundException(int i, String message) { super(message); this.id = i; } EmployeeNotFoundException(int i, String message, String cause) { super(message, new Throwable(cause)); this.id = i; } @Override public String toString() { return String.format("EmployeeNotFoundException[%d]", this.id); } }