http://blog.csdn.net/jasph77/archive/2008/03/27/2223272.aspx
本文讨论有关异常设计的问题,关注何时和怎么更好的使用异常类,设计符合自己系统的自己定义异常类。这里假设读者已经对java已经一定的了解,知道什么是java的异常,及其工作原理。读者想了解java 和 java异常相关知识,请拜读《Thinking in java 3rd 》(真实一本好书^_^)
异常设计原则:
异常表示没有遵守契约。如果一个事件表示了“异常条件”或者“没有遵守契约”,那么,Java程序所要做的就是抛出异常。
异常的类型:
检查型异常checked和非检查型异常non-checked(运行时异常,RuntimeException和它的子类)。
一般而言,表示类的误用的异常应该是非检查型异常。String类的chartAt()方法抛出的StringIndexOutOfBoundsException就是一个非检查型异常。SUN公司并不打算强制客户程序员每次调用charAt(int index)时都检查index参数的合法性。
另一方面,java.io.FileInputStream类的read()方法抛出的是IOException,这是一个检查异常。这个异常表明尝试读取文件时出错了。这并不意味着客户程序员错误地使用了FileInputStream类,而是说这个方法无法履行它地职责,即从文件中读出下一个字节。FileInputStream类地设计者认为这个意外情况很普遍,也很重要,因而强制客户程序员处理之。
意外情况是方法无法履行职责,而且很普遍的或者很重要的,调用者必须采取措那抛出检查型异常,反之,抛出非检查型异常。
自定义异常类
为了很好的定位java程序的错误,加强系统的健壮性,避免NullPointerException错误的出现几率,需要建立一套完善的Java自定义Exception错误体系。
自定错误命名规范:AH+错误类型+Exception。例:
检查型异常checked
public class AhDataBaseException extends Exception {
public AhDataBaseException(String message, Throwable cause) {
super(message,cause);
}
}
public class ConnectionManager {
public ResultSet execSelectSQL(String sql) throws AhDataBaseException{
try {
conn.setAutoCommit(true);
PreparedStatement st = getPreparedStatement(sql);
return st.executeQuery();
} catch (SQLException e) {
//e.printStackTrace();
throw new AhDataBaseException(sql,e);
}
}
}
<%
ConnectionManager smgr = new ConnectionManager();
String sql = "select MMSId from a_shipinfoais";
try{
ResultSet rs = smgr.execSelectSQL(sql);
int i = 0;
while(rs.next()){
i++;
out.println(rs.getString("MMSI"));
if (i>100) break;
}
}catch(AhDataBaseException e){
e.printStackTrace();
}
%>
非检查型异常non-checked:
public class AhCheckDataException extends RuntimeException {
public AhCheckDataException (String message){
super(message);
}
}
public class Peoples{
private int num = 0; //min = 0 ;max = 100
public setnum(int value){
if ((value<0)||(value>100)){
throw new AhCheckDataException("Out of bound. sun = "+value);
}
}
};
public class test{
public static void main(String[] argc){
Peoples pps = new Peoples();
pps.setnum(101);
}
};
分享到:
相关推荐
总的来说,Java自定义异常是异常处理机制的一个重要组成部分,它让开发者能够根据具体需求扩展和定制异常处理流程,有效地管理程序运行中的错误情况,从而提升软件的稳定性和可靠性。通过学习和掌握这一技能,开发者...
Java自定义异常处理详细介绍,包括了很多比较经典的案例,可以自己研究自定义异常
### JAVA自定义异常类 #### 一、基本概念与应用场景 在Java编程中,异常处理是一种重要的机制,用于处理程序运行时可能出现的各种错误情况。Java提供了丰富的内置异常类,但有时候,内置的异常类可能不足以精确地...
java自定义弹窗Demo,主要代码: thisDialog = this; this.setTitle("提示"); this.setSize(300, 150); this.setModal(true); this.setLocationRelativeTo(c); actionL = new ActionListener...
### 实现Java自定义注解拦截器 #### 概述 本文主要介绍如何在Spring Boot项目中使用自定义注解来实现对特定方法的拦截功能。具体场景为:当访问项目中的控制器方法时,需要进行“token验证”,但登录等特殊方法...
综上所述,Java自定义异常允许开发者创建符合应用需求的异常类型,提高代码的可读性和可维护性。通过理解异常的继承体系,编写自定义异常类,以及正确地抛出和处理异常,我们可以构建更加健壮和易用的Java应用程序。
在实际的Java开发项目中,自定义异常是提高代码可读性和可维护性的重要手段。异常处理是程序设计的关键部分,它有助于捕获并处理在程序执行过程中可能出现的错误或异常情况。Java提供了丰富的异常处理机制,包括预...
下面我们将深入探讨Java自定义异常及其应用。 首先,自定义异常通常是通过扩展Java内置的`Exception`类或其子类来实现的。`Exception`类是所有可抛出异常的基类,它本身继承自`Throwable`类。创建自定义异常时,...
在实际开发中,可能还需要考虑布局管理(如`FlowLayout`, `GridLayout`, `BorderLayout`等)、国际化支持、响应式设计等因素,以满足不同用户的需求。 在提供的压缩包文件中,可能包含了一些示例代码或者资源文件,...
### Java自定义异常类详解 #### 一、Java异常体系概览 在Java语言中,异常处理机制是一种用于处理程序运行时错误的重要机制。Java中的异常处理基于`java.lang.Throwable`类,它有两个重要的子类:`Exception`和`...
总结一下,Java自定义异常是通过创建新的异常类来实现的,这些类通常继承自`Exception`类或其子类。自定义异常可以包含特定的错误信息,并在遇到预期之外的情况时抛出。通过使用自定义异常,开发者可以更好地组织和...
自定义异常类通常继承自`Exception`或其子类,并提供相应的构造函数和方法。下面是一个简单的自定义异常示例: ```java class MyException extends Exception { public MyException(String message) { super...
### Java自定义导入与导出XLS文件技术详解 #### 一、背景介绍 在日常工作中,Excel文件作为数据交换的重要工具之一,被广泛应用于各种业务场景中。Java作为一种常用的后端开发语言,在处理Excel文件时也有着丰富的...
Java 自定义注解的实例详解 Java 自定义注解是 Java 语言中的一种重要特性,它可以用于创建文档,跟踪代码中的依赖性,并且可以执行编译时期检查。自定义注解可以让开发者根据需要创建自己的注解,以满足特定的需求...
Java自定义回调函数是软件开发中的一个重要概念,尤其是在Android和SDK开发中,它极大地提高了代码的灵活性和可扩展性。回调函数允许一个方法在完成特定操作后通知另一个方法,这种设计模式在异步编程和事件处理中...
### Java自定义异常类知识点详解 #### 一、概述 在Java编程中,自定义异常是一种常见的编程实践,它能够帮助开发者更精确地控制程序的行为并处理错误情况。通过创建自定义异常类,我们可以根据应用的具体需求来抛...
首先,自定义错误类通常会继承自Java的`Exception`类或其子类,例如`RuntimeException`。`Exception`类是所有检查异常(checked exceptions)的基类,而`RuntimeException`则是一些非检查异常(unchecked exceptions...
### 使用JAVA实现Informatica自定义控件:FOR循环 #### 概述 本文将详细介绍如何在Informatica PowerCenter中利用Java Transformation实现FOR循环。通过这种方式,可以有效地处理一系列重复任务,尤其是在数据转换...
Java的异常类都继承自`java.lang.Throwable`,主要分为两种类型:Error和Exception。Error是系统级的错误,如虚拟机错误、内存不足等,一般开发者无法处理,而Exception是应用程序可以预见并处理的异常。 声明异常...
本文将深入探讨Java自定义异常及其在实际代码中的应用。 首先,Java异常是通过`Exception`类或其子类来表示的。当程序中出现非正常情况时,可以抛出一个异常对象。Java提供了丰富的预定义异常类,如`IOException`, ...