• 自定义异常(案例)


    1.写一个Student学生类,包含 name, id属性

    public class Student implements Comparable<Student> {
        
        private int id;
        private String name;
        
        
        public Student() {
            super();
        }
        
        public Student(int id, String name) throws Exception {
            super();
            // this.id = id;
            setId(id);
            // this.name = name;
            setName(name);
        }
        
        
        public int getId() {
            return id;
        }
        public void setId(int id) throws IdException {
            if(id>0 ) {
                this.id = id;
            }else {
            //    System.out.println("学号不合理,请重新输入......");
                throw new IdException("学号不合理!!!");
                
            }
            System.out.println("看这行代码是否执行");
            
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "Student [id=" + id + ", name=" + name + "]";
        }
    
        
        
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + id;
            result = prime * result + ((name == null) ? 0 : name.hashCode());
            return result;
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Student other = (Student) obj;
            if (id != other.id)
                return false;
            if (name == null) {
                if (other.name != null)
                    return false;
            } else if (!name.equals(other.name))
                return false;
            return true;
        }
    
        @Override     //实现了Comparable接口,则必然空实现Comparable接口中的comparableTo()方法
        
        public int compareTo(Student o) {
            // 按照学号比较大小
            // return getId()-o.getId();
            
            // 按照姓名比较大小
            return getName().compareTo(o.getName());
            
        }
        
        
        
    
    }

    2.自定义一个IdException异常类

    package com.monkey1030;
    
    public class IdException extends Exception {
        
        // 自定义无参构造方法
        public IdException() {
            
        }
        
        // 自定义有参构造方法
        public IdException(String str) {
            super(str);
        }
            
    
    }

    3.要求: 不合逻辑的id属性值构造对象,否则程序产生IdException异常

    package com.monkey1030;
    
    public class Test {
    
        public static void main(String[] args) {
            Student s = null;
            
            try {
                  s = new Student(-1001,"卡纳瓦罗");     // 此时id  传入的是 -1001,不合理值
            } catch (Exception e) {
                e.printStackTrace();
            }
                System.out.println(s);
        }
    
    }

      当  new Student(-1001,"卡纳瓦罗"); // 此时id 传入的是 -1001,不合理值

    结果:

    com.monkey1030.IdException: 学号不合理!!!
        at com.monkey1030.Student.setId(Student.java:30)
        at com.monkey1030.Student.<init>(Student.java:16)
        at com.monkey1030.Test.main(Test.java:9)
    null

      当  new Student(1001,"卡纳瓦罗"); // 此时id 传入的是 1001,合理值

    结果:

    看这行代码是否执行
    Student [id=1001, name=卡纳瓦罗]

    了解一下 compareTo()方法的使用:


  • 相关阅读:
    spl_autoload_register()和__autoload()区别
    编程语言相关科目
    类继承和重写的区别
    心理扭曲和心理变态含义分别是什么?
    java中的静态方法
    《深入理解JavaScript》—— JSON
    《深入理解JavaScript》—— Date
    《深入理解JavaScript》—— 正则表达式
    《深入理解JavaScript》—— 数组
    《深入理解JavaScript》—— 对象与继承(第2层)
  • 原文地址:https://www.cnblogs.com/penguin1024/p/11804990.html
Copyright © 2020-2023  润新知