`
firewings
  • 浏览: 45841 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】Java自定义Exception设计

阅读更多

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 自定义异常 Exception

    总的来说,Java自定义异常是异常处理机制的一个重要组成部分,它让开发者能够根据具体需求扩展和定制异常处理流程,有效地管理程序运行中的错误情况,从而提升软件的稳定性和可靠性。通过学习和掌握这一技能,开发者...

    Java自定义异常处理

    Java自定义异常处理详细介绍,包括了很多比较经典的案例,可以自己研究自定义异常

    JAVA自定义异常类

    ### JAVA自定义异常类 #### 一、基本概念与应用场景 在Java编程中,异常处理是一种重要的机制,用于处理程序运行时可能出现的各种错误情况。Java提供了丰富的内置异常类,但有时候,内置的异常类可能不足以精确地...

    java自定义弹窗Demo

    java自定义弹窗Demo,主要代码: thisDialog = this; this.setTitle("提示"); this.setSize(300, 150); this.setModal(true); this.setLocationRelativeTo(c); actionL = new ActionListener...

    实现java自定义注解拦截器.docx

    ### 实现Java自定义注解拦截器 #### 概述 本文主要介绍如何在Spring Boot项目中使用自定义注解来实现对特定方法的拦截功能。具体场景为:当访问项目中的控制器方法时,需要进行“token验证”,但登录等特殊方法...

    Java自定义异常源代码

    综上所述,Java自定义异常允许开发者创建符合应用需求的异常类型,提高代码的可读性和可维护性。通过理解异常的继承体系,编写自定义异常类,以及正确地抛出和处理异常,我们可以构建更加健壮和易用的Java应用程序。

    实际项目中java自定义异常

    在实际的Java开发项目中,自定义异常是提高代码可读性和可维护性的重要手段。异常处理是程序设计的关键部分,它有助于捕获并处理在程序执行过程中可能出现的错误或异常情况。Java提供了丰富的异常处理机制,包括预...

    java 自定义异常实例二

    下面我们将深入探讨Java自定义异常及其应用。 首先,自定义异常通常是通过扩展Java内置的`Exception`类或其子类来实现的。`Exception`类是所有可抛出异常的基类,它本身继承自`Throwable`类。创建自定义异常时,...

    java自定义JFrame风格窗体

    在实际开发中,可能还需要考虑布局管理(如`FlowLayout`, `GridLayout`, `BorderLayout`等)、国际化支持、响应式设计等因素,以满足不同用户的需求。 在提供的压缩包文件中,可能包含了一些示例代码或者资源文件,...

    Java自定义异常类_1.txt

    ### Java自定义异常类详解 #### 一、Java异常体系概览 在Java语言中,异常处理机制是一种用于处理程序运行时错误的重要机制。Java中的异常处理基于`java.lang.Throwable`类,它有两个重要的子类:`Exception`和`...

    java 自定义异常实例一

    总结一下,Java自定义异常是通过创建新的异常类来实现的,这些类通常继承自`Exception`类或其子类。自定义异常可以包含特定的错误信息,并在遇到预期之外的情况时抛出。通过使用自定义异常,开发者可以更好地组织和...

    java Exception

    自定义异常类通常继承自`Exception`或其子类,并提供相应的构造函数和方法。下面是一个简单的自定义异常示例: ```java class MyException extends Exception { public MyException(String message) { super...

    java 自定义导入xls与导出xls

    ### Java自定义导入与导出XLS文件技术详解 #### 一、背景介绍 在日常工作中,Excel文件作为数据交换的重要工具之一,被广泛应用于各种业务场景中。Java作为一种常用的后端开发语言,在处理Excel文件时也有着丰富的...

    java 自定义注解的实例详解

    Java 自定义注解的实例详解 Java 自定义注解是 Java 语言中的一种重要特性,它可以用于创建文档,跟踪代码中的依赖性,并且可以执行编译时期检查。自定义注解可以让开发者根据需要创建自己的注解,以满足特定的需求...

    java自定义回调函数

    Java自定义回调函数是软件开发中的一个重要概念,尤其是在Android和SDK开发中,它极大地提高了代码的灵活性和可扩展性。回调函数允许一个方法在完成特定操作后通知另一个方法,这种设计模式在异步编程和事件处理中...

    Java自定义异常类_2.txt

    ### Java自定义异常类知识点详解 #### 一、概述 在Java编程中,自定义异常是一种常见的编程实践,它能够帮助开发者更精确地控制程序的行为并处理错误情况。通过创建自定义异常类,我们可以根据应用的具体需求来抛...

    Java 自定义错误类示例代码

    首先,自定义错误类通常会继承自Java的`Exception`类或其子类,例如`RuntimeException`。`Exception`类是所有检查异常(checked exceptions)的基类,而`RuntimeException`则是一些非检查异常(unchecked exceptions...

    informatica jAVA自定义控件

    ### 使用JAVA实现Informatica自定义控件:FOR循环 #### 概述 本文将详细介绍如何在Informatica PowerCenter中利用Java Transformation实现FOR循环。通过这种方式,可以有效地处理一系列重复任务,尤其是在数据转换...

    Java exception_java_

    Java的异常类都继承自`java.lang.Throwable`,主要分为两种类型:Error和Exception。Error是系统级的错误,如虚拟机错误、内存不足等,一般开发者无法处理,而Exception是应用程序可以预见并处理的异常。 声明异常...

    Java自定义异常_动力节点Java学院整理

    本文将深入探讨Java自定义异常及其在实际代码中的应用。 首先,Java异常是通过`Exception`类或其子类来表示的。当程序中出现非正常情况时,可以抛出一个异常对象。Java提供了丰富的预定义异常类,如`IOException`, ...

Global site tag (gtag.js) - Google Analytics