`

Java自定义Exception设计

阅读更多

异常设计原则:
       异常表示没有遵守契约 。如果一个事件表示了“异常条件”或者“没有遵守契约”,那么,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

    Exception JAVA 自定义异常 Exception JAVA 自定义异常 Exception

    Java自定义异常处理

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

    java自定义弹窗Demo

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

    Java自定义异常案例--ExceptionManager(java源码)

    * @see java.lang.Exception * @since jdk 1.5 */ public class ExceptionManager extends RuntimeException { private static final long serialVersionUID = -6963187366089365790L; /** * This field ...

    Java《面向对象程序设计》实验报告六

    自定义异常类MyException,该类继承自Exception类,类中只有含一个字符串参数msg的构造方法,构造方法中只有一条语句super(msg)——调用父类的构造方法。另外,编写自定义类person,类中只有两个私有的变量,一个是...

    Java exception_java_

    Java异常处理的几个Example代码,让我们了解异常类型、声明异常、抛出和捕获异常、从异常获取信息、创建自定义异常等内容。

    java自定义异常及处理

    1:异常的分类以及区别 2:自定义异常的实现 3:自定义异常的处理 4:异常的妙用

    Java如何自定义异常打印非堆栈信息详解

    主要给大家介绍了关于Java如何自定义异常打印非堆栈信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

    创建自定义异常 Create Custom Exception3---马克-to-win java视频

    创建自定义异常 Create Custom Exception3---马克-to-win java视频

    创建自定义异常 Create Custom Exception1---马克-to-win java视频

    创建自定义异常 Create Custom Exception1---马克-to-win java视频

    Java自定义异常

     1)首先创建自定义异常类,语法格式:自定义异常类名 extends Exception。  2)在方法中通过关键字throw抛出异常对象。  3)若是在当前抛出异常的方法中处理异常,可以用try-catch语句捕获并处理;若不是,...

    【Java】自定义异常和异常中的方法覆盖注意事项

    自定义异常1.1 定义方式1.2 自定义异常的抛出1.3 自定义异常的捕获2. 异常中的方法覆盖 1. 自定义异常 1.1 定义方式 ① 必须继承自Exception或Exception的子类,常用RuntimeException ② 必须提供无参构造方法; ③...

    Java高级程序设计(第二版)--第2章-异常处理.pptx

    第2章 异常处理 2.1 什么是异常 2.2 处理异常 2.3 自定义异常与throw关键字 2.4 throws关键字 2.5 Java的内置异常 Java高级程序设计(第二版)--第2章-异常处理全文共19页,当前为第2页。 本章目标 理解异常及其作用 ...

    java编写根据模板导出excel

    import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet.ServletContext; import ...

    Java开发技术大全(500个源代码).

    useMyException.java 使用自定义异常 第7章 示例描述:本章学习Java的输入和输出。 CopyFile.java 文件复制实例 dir.java 显示目录下的所有文件和目录 encrypt.java 文件加密 FileList.java 自己实现的一个...

    《Java程序设计案例教程》教学课件07异常处理.pptx

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8 at ch6.example.Example6_1.main(Example6_1.java:16) 《Java程序设计案例教程》教学课件07异常处理全文共31页,当前为第4页。...

    《Java和Android开发实战详解》第6到10章源代码-by 南邮-陈杨

    10.2 抛出异常与自定义Exception类 196 10.2.1 使用throw关键字 196 10.2.2 在方法抛出异常 197 10.2.3 自定义Exception类 199 10.3 线程的基础知识 200 10.4 创建Java的线程 201 10.4.1 实现Runnable...

    最全java考试编程题

    *555555555*)(3)实现至少一处自定义 Exception(4)进行 Exception 控制 public class Triangle { public static void main(String[] args) { try { int height = Integer.parseInt(args[0]); // 从命令行参数读取...

    java实验2实验报告.doc

    3、掌握java自定义异常和处理。 4、 通过实验,对Java程序的开发有一个深入了解。 二、实验内容 1.阅读并分析程序TestException.java。(见附件PPT文件) 2.设计一个程序,其功能是从命令行输入整数字符串,再将该...

    Java高级程序设计:第8章-异常处理.pptx

    自定义异常类 语法错误, 运行期错误, 逻辑错误 语法错误: 没有遵循语法规则导致的错误。 运行期错误: 程序运行时,运行环境发现一个不可能执行的操作。 逻辑错误: 程序没有按照预期的方案执行。 异常(Exception) ...

Global site tag (gtag.js) - Google Analytics