1.前言:
你的程序总有一天会崩溃掉,在崩溃掉的时候我们要知道它在哪,为了什么而崩溃掉,数据的保存或者丢失情况如何等问题。我们可以通过继承类java.lang.Throwable的子类:Exception来设计我们自己的Java异常。Exception类用于描述程序能够捕获的异常,如ClassNotFoundException。要注意的是自定义异常类之间也可以有继承关系,同时也需要为自定义异常类设计构造方法,以方便构造自定义异常对象。
2.设计实例分析:
这是个比较完整的自定义异常类的设计,其实是比较模板化的东西。
package playground;
import java.io.*;
public class MyException extends Exception {
private int id; // a unique id
private String classname; // the name of the class
private String method; // the name of the method
private String message; // a detailed message
private MyException previous =
null; // the exception which was caught
private String separator = "\n"; // line separator
public MyException(int id, String classname, String method,
String message, MyException previous) {
this.id = id;
this.classname = classname;
this.method = method;
this.message = message;
this.previous = previous;
}
public String traceBack() {
return traceBack("\n");
}
public String traceBack(String sep) {
this.separator = sep;
int level = 0;
MyException e = this;
String text = line("Calling sequence (top to bottom)");
while (e != null) {
level++;
text += line("--level " + level + "--------------------------------------");
text += line("Class/Method: " + e.classname + "/" + e.method);
text += line("Id : " + e.id);
text += line("Message : " + e.message);
e = e.previous;
}
return text;
}
private String line(String s) {
return s + separator;
}
}
我们来一个个看看这些东西:
在这个继承了Exception类的自定义异常类中,我们定义了如下变量:
id:独立标示符,这个是用来进行标示类中什么地方出现了错误被捕捉到。
classname:捕捉到这个错误的类的名字。
method:捕捉到这个错误的方法的名字。
message:用来描述整个事件的情况。
previous:是MyException得一个实例,若在链表中它是第一个的话,那么它就是null。
我们再看看都定义了什么方法:
traceBack():产生一个包含在异常类中存储的数据的一个回溯。使用newline标示作为分隔符
traceBack(String sep):和上一个其实是相同的东西,使用的分隔符可以自己定义。
line(String s):traceBack使用的一个方法。
步骤一:先扔出第一个异常:
这有两种情况:
a.若程序判断异常的某个地方主动抛出异常,那么你就会主动抛出一个错误,例如:
throw new MyException( 1, "Person", "getSalary",
"Trying to get a salary, but no person was specified",null);
b.在另一个异常出现时抛出该异常,例如:
catch (Exception e) {
throw new MyException(4, "Person", "read", e.toString(), null);
}
要是某一个方法要抛出MyException异常,那么在方法定义的时候形式如下:
public void read() throws MyException . . .
步骤二:接着我们扔出来的异常,例如:
Person p = new Person();
p.setPersonId(id);
try {
p.read();
s += p.getSalary();
}
catch (MyException e) {
throw new MyException(1, "Stats", "getAllSalaries",
"Could not get salary for " + id, e);
}
我们的策略是这样的:将我们可能扔出异常的方法置于我们的监控之下(try{}),然后出了事情我们在处理区(catch{})把这个异常处理,至于处理的方式可以是当场处理,也可以处理不了交予其他地方处理(throw())。需要注意的是,我们看到最后一个参数e,我们要在每个新的异常处将这个异常加入到异常类的链表中。
步骤三:回溯异常
我们上边设计的这个异常最后得出的一个异常链如下:
Calling sequence (top to bottom)
--level 1--------------------------------------
Class/Method: SalaryServlet/doGet
Id : 7
Message : Trying to get the total salary for employees
--level 2--------------------------------------
Class/Method: Stats/getAllSalaries
Id : 1
Message : Could not get salary for Lincoln
--level 3--------------------------------------
Class/Method: Person/read
Id : 3
Message : java.sql.SQLException: [HANSEN]Invalid object name 'xEMPLOYEE'.
--level 4--------------------------------------
Class/Method: Person/read
Id : 999
Message : SQLException. State/error code: S0002/208
我们可以分析得知在这个场景上,一个servlet被触发了,它调用了getAllSalaries,然后又调用了read方法,在read方法中,出现了一个SQLException
3.总结:
自定义异常类给了我们自己喜欢的异常的出现,其他的也没什么。哈哈~
分享到:
相关推荐
Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE程序 自定义异常类Java SE...
23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java...
自己编写异常类型 ,自定义错误异常进行全局捕捉。实现项目全局的拦截定义输出。。。
在 Java 中,自定义异常通常继承自 `Exception` 或其子类。例如,你可以创建一个名为 `CustomServiceException` 的异常类,它可能包含特定的错误码和错误信息: ```java public class CustomServiceException ...
自定义异常是Java中的一种高级技巧,允许开发者创建符合特定应用需求的异常类。下面将详细解释如何在Java中自定义异常,并通过源代码实例进行说明。 一、自定义异常的必要性 在标准库中,Java已经提供了一套丰富的...
自定义异常是Java异常处理的一部分,允许我们创建符合特定业务需求的异常类。下面我们将深入探讨Java自定义异常及其应用。 首先,自定义异常通常是通过扩展Java内置的`Exception`类或其子类来实现的。`Exception`类...
Java异常机制可以保证程序更安全和更健壮。虽说Java类库已经提供很多可以直接处理异常的类,但是有时候为了更加地捕获和处理异常以呈现更好的用户体验,需要开发者自定义异常。本文是探讨如何自定义异常以及使用...
Java自定义异常处理详细介绍,包括了很多比较经典的案例,可以自己研究自定义异常
在实际的Java开发项目中,自定义异常是提高代码可读性和可维护性的重要手段。异常处理是程序设计的关键部分,它有助于捕获并处理在程序执行过程中可能出现的错误或异常情况。Java提供了丰富的异常处理机制,包括预...
自定义异常是Java提供的一种机制,允许开发者创建特定于应用程序的异常类,以更精确地控制错误处理流程。本实例将深入探讨如何在Java中自定义异常。 首先,自定义异常通常继承自Java内置的`Exception`类或其子类,...
#### 一、Java异常体系概览 在Java语言中,异常处理机制是一种用于处理程序运行时错误的重要机制。Java中的异常处理基于`java.lang.Throwable`类,它有两个重要的子类:`Exception`和`Error`。 1. **`Throwable`**...
### JAVA自定义异常类 #### 一、基本概念与应用场景 在Java编程中,异常处理是一种重要的机制,用于处理程序运行时可能出现的各种错误情况。Java提供了丰富的内置异常类,但有时候,内置的异常类可能不足以精确地...
Java 异常处理与自定义异常 Java 异常处理是 Java 编程语言中一个非常重要的概念,它能够帮助开发者捕获和处理程序中出现的错误,以确保程序的稳定运行和安全。Java 平台为我们提供了丰富和完整的异常类,通过这些...
在IT行业中,自定义Java开发框架是提升开发效率和代码质量的重要工具。它通常包括一系列设计模式、组件和工具,旨在简化项目的构建过程,提供快速的业务逻辑搭建能力,以及高效的表单管理和数据处理功能。"自定义...
总的来说,Java自定义异常是异常处理机制的一个重要组成部分,它让开发者能够根据具体需求扩展和定制异常处理流程,有效地管理程序运行中的错误情况,从而提升软件的稳定性和可靠性。通过学习和掌握这一技能,开发者...
Java 提供了一套完整的异常处理机制,其中包括标准异常类以及允许开发人员自定义异常的能力。本文将详细介绍如何在 Java 中创建自定义异常类,并通过一个示例来展示如何使用这些自定义异常。 #### 创建自定义异常类...
自定义异常和抛出异常是Java异常处理机制的重要组成部分,它们允许开发者更精细地控制程序的错误处理流程。本篇文章将深入探讨这两个概念。 首先,让我们了解什么是自定义异常。Java提供了一套内置的异常类,如`...
5. **编写自定义Java代码**:创建一个自定义Java步骤,这里你需要具备一定的Java编程基础。代码需要实现的功能包括连接到目标SQL Server数据库,创建新表(如果不存在),并插入从源表读取的数据。注意处理可能的...
【Java异常处理-自定义异常类及课后练习】 在Java编程中,异常处理是程序健壮性的重要组成部分。Java提供了丰富的预定义异常类,但有时这些预定义的异常类并不能满足特定业务需求,这时就需要自定义异常类。自定义...
自定义异常是Java异常处理的一部分,它允许我们根据特定的业务需求创建自己的异常类。下面将详细介绍如何在Java中定义和使用自定义异常。 首先,让我们了解Java异常的基本概念。Java中的异常是一种事件,它在程序...