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!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14686579.html