• 4.21Java自定义异常


    4.21Java自定义异常

    本章内容

    • 什么是自定义异常类

    • 自定义异常类特点

    • 自定义异常类处理要求


    什么是自定义异常类

    程序中JDK提供的任何标准异常类都无法充分描述清除的问题的类,需要创建自己的异常类。这个异常类就叫做自定义异常类

    自定义异常类的特点

    • 只需从Exception类或者其它的子类派生一个子类即可---继承

      • 如果继承Exception类,为受检查异常,必须进行处理

      • 继承RuntimeException类,可以不进行异常处理

    • 习惯上,自定义异常类应该包含两个构造器:

      • 默认的构造器

      • 带有详细信息的构造器

    自定义异常类:---继承了Exception类

    package com.exception;

    /**
    * 测试自定义异常类,一个不合法年龄异常类
    * @author Lucifer
    */
    public class Test04 {
       public static void main(String[] args) {

           /*创建对象,调用写好的方法*/
           Person p = new Person();
           p.setAge(-10);
      }
    }


    /*定义一个person类*/
    class Person{

       /*定义一个私有的属性*/
       private int age;

       /*JavaBean方法*/
       public void setAge(int age){
           /*加一个判断和异常处理*/
           if (age<0 || age>150){
               try {
                   throw new IllegalAgeException("年龄不合法");
              }catch (IllegalAgeException e){
                   e.printStackTrace();
              }
               /*
               创建对象,输出语句
               这里输出的语句是异常提示不是System的打印语句
               这是一个自定义异常类
               此处只是为了测试而测试
               如果继承的是Exception类,那么必须try---catch
               这是两种不同的方式
                */
          }
           this.age = age;
      }

       /*JavaBean方法*/
       public int getAge(){
           return age;
      }
    }


    /*定义年龄自定义异常类*/
    class IllegalAgeException extends Exception{

       /*按照规则里面要有两个构造器*/
       //默认的构造器
       public IllegalAgeException(){

      }

       //带有形参和信息的构造器
       public IllegalAgeException(String msg){

           //可以调用父类构造器的方法
           super(msg);
      }
       /*
       如果继承的是Exception那么就不是编译器进行异常处理
       而是人为进行处理。
       在编写代码时必须try---catch
       或者throws抛出给上一层
        */
    }

    继承RuntimeException类:

    package com.exception;

    /**
    * 测试自定义异常类,一个不合法年龄异常类
    * @author Lucifer
    */
    public class Test04 {
       public static void main(String[] args) {

           /*创建对象,调用写好的方法*/
           Person p = new Person();
           p.setAge(-10);
      }
    }


    /*定义一个person类*/
    class Person{

       /*定义一个私有的属性*/
       private int age;

       /*JavaBean方法*/
       public void setAge(int age){
           /*加一个判断和异常处理*/
           if (age<0 || age>150){
                   throw new IllegalAgeException("年龄不合
              }
               /*
               创建对象,输出语句
               这里输出的语句是异常提示不是System的打印语句
               这是一个自定义异常类
               此处只是为了测试而测试
               如果继承的是Exception类,那么必须try---catch
               这是两种不同的方式
                */
          }
           this.age = age;
      }

       /*JavaBean方法*/
       public int getAge(){
           return age;
      }
    }


    /*定义年龄自定义异常类*/
    class IllegalAgeException extends RuntimeException{

       /*按照规则里面要有两个构造器*/
       //默认的构造器
       public IllegalAgeException(){

      }

       //带有形参和信息的构造器
       public IllegalAgeException(String msg){

           //可以调用父类构造器的方法
           super(msg);
      }
       /*
       如果继承的是Exception那么就不是编译器进行异常处理
       而是人为进行处理。
       在编写代码时必须try---catch
       或者throws抛出给上一层
        */
    }

    使用异常机制的建议

    1. 避免使用异常处理代替错误处理,这样会降低程序的清晰性,并且效率低下

    2. 处理异常不可以代替简单测试---只在异常情况下使用异常机制

    3. 不要进行小粒度的异常处理---应该将整个任务包装在一个try语句块中---不要写很多try语句,同一功能进行 放在一个try下

    4. 异常往往在高层处理---由调用者处理,最后由最高层处理

    只说明了解异常,不代表具备异常处理能力

    It's a lonely road!!!
  • 相关阅读:
    英语中的合成词
    超声诊断装置的质量评价
    图像处理的数学方法zz
    超声射频信号的产生(RF Signal)
    黄帝内经——春夏秋冬养生之道zz
    超声仿真软件Field II的使用
    水木上关于超声图像增强的讨论
    TWaver HTML5 + Node.js + express + socket.io + redis(五)
    如何用Swing去绘制电力系统图
    TWaver在FTTX设备网管系统中的应用
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14686579.html
Copyright © 2020-2023  润新知