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);
}
}

