Nhờ hướng dẫn exception

Em đang học java đang gặp khó chỗ tạo Exception mong mọi người giúp. Đề bài là tạo 1 project quản lý sinh viên và tạo 1 Exception bắt lỗi khi nhập vào 1 id đã tồn tại và trả về thông tin của sinh viên có id trùng. Dưới đây là phần code của em. Mong các cao nhân tạo mẫu giúp em Exception để tham khảo ạ

Class Student

public class Student{
    private int id;
    private LocalDate dob;
    private String name;

    public Student() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public LocalDate getDob() {
        return dob;
    }

    public void setDob(LocalDate dob) {
        this.dob = dob;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Student other = (Student) obj;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }
    
    

    @Override
    public String toString() {
        return "Student{" + "id=" + id + ", dob=" + dob + ", name=" + name + "}\n";
    }

    public void Input(){
        while (true) {            
            try {
                id = Validator.getInteger("Enter id: ", 0, Integer.MAX_VALUE);
                break;
            } catch (Exception e) {
                System.out.println(e.getMessage());
                System.out.println("Retype");
            }
        }
        
        try {
            name = Validator.getString("Enter name: ", 2, 100);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
            System.out.println("-> name gets default value");
            name = "Student_" + id;
        }
        
        try {
            dob = Validator.getLocalDate("Enter dob: ", LocalDate.now().minusYears(80), LocalDate.now().minusYears(17), "dd/MM/yyyy");
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
            System.out.println("-> empty info");
        }
    }
}

class Array Student

public class StudentAr {
    ArrayList<Student> st;
    Scanner sc = new Scanner(System.in);

    public StudentAr() {
        st = new ArrayList<>();
    }
    
    public void Input(){
        int count = 1;
        while(count == 1){
            Student s = new Student();

            s.Input();
            st.add(s);
            System.out.println("Information student have been added");
            try {
                count = Validator.getInteger("Add new student. 0_stop, 1_continue", 0, 1);
            } catch (Exception ex) {
                count = 0;
            }
        }
    }

    @Override
    public String toString() {
        return "StudentList{" + st + '}';
    }
    
    
    
    public void SortByID(){
        Collections.sort(st, new SortByID());
        for (int i = 0; i < st.size(); i++) {
            System.out.println(st);
            break;
        }
    }
    
    public void SortByName(){
        Collections.sort(st, new SortByName());
        for (int i = 0; i < st.size(); i++) {
            System.out.println(st);
            break;
        }
    }
    
    public void SortByDob(){
        Collections.sort(st, new SortByDob());
        for (int i = 0; i < st.size(); i++) {
            System.out.println(st);
            break;
        }
    }
}

Class Validator dùng để kiểm tra thông tin nhập vào

public class Validator {
    public static Scanner sc = new Scanner(System.in);
    
    public static int getInteger(String mess, int min, int max) throws Exception{
        System.out.println(mess);
        int i = 0;
        try {
            i = sc.nextInt();
            sc.nextLine();
        } catch (InputMismatchException e) {
            sc.nextLine();
            throw e;
        }
        if (i< min || i > max) {
            throw new Exception("data is out of the requested range");
        }
        return i;
    }
    
    public static String getString(String mess, int minLength, int maxLength) throws Exception{
        System.out.println(mess);
        String s = sc.nextLine();
        if (s.length() < minLength || s.length() > maxLength) {
            throw new Exception("string length does not match");
        }
        return s;
    }
    
    public static LocalDate getLocalDate(String mess, LocalDate min, LocalDate max, String pattern) throws Exception{
        System.out.println(mess);
        String s = sc.nextLine();
        LocalDate dob = LocalDate.parse(s, DateTimeFormatter.ofPattern(pattern));
        if (dob.compareTo(min) < 0 || dob.compareTo(max) > 0) {
            throw new Exception("import date not working in requested range");
        }
        return dob;
    }
}

class SortByID dùng để sắp xếp mảng theo ID

public class SortByID implements Comparator<Student>{
    
    @Override
    public int compare(Student t1, Student t2) {
        if (t1.getId() > t2.getId()) {
            return 1;
        } else if (t1.getId() < t2.getId()){
            return -1;
        } else {
            return 0;
        }
    }
}

Class SortByName dùng để sắp xếp theo tên

public class SortByName implements Comparator<Student>{
        @Override
        public int compare(Student t1, Student t2){
        if (t1.getName().compareTo(t2.getName()) > 0) {
            return 1;
        } else if (t1.getName().compareTo(t2.getName()) < 0) {
            return -1;
        } else {
            return 0;
        }
    }
}

Class SortByDob sắp xếp theo ngày sinh

public class SortByDob  implements Comparator<Student>{

    @Override
    public int compare(Student t1, Student t2) {
        return (t2.getDob().compareTo(t1.getDob()));
    }

}

Bạn biết exception là gì không? Nó dùng với các từ khóa nào?

4 Likes

dạ exception dùng để bắt các lỗi và sử lý lỗi theo cách mong muốn. dùng với từ khóa throws để đấy lỗi về cho hàm sử lý đúng ko ạ. Em mới học nên chỉ mới biết thế thôi ạ

1 Like

tạo class extends RuntimeException

public class ExistUserException extends RuntimeException {

    

    public ExistUserException (String message) {
        super(message);
    }
    

   
}

hàm khác dùng thôi

void validateUser(String id) throws ExistUserException  {
  if ( id == xxx) {
    throw new  ExistUserException  ("id exist...." + xxx);
    }
}
3 Likes

dạ em cảm ơn nhưng chỗ em bí là chỗ nên so sánh id kia == với gì để biết là so sánh với id trong list ấy ạ

dùng vòng for duyệt qua arraylist, dùng arrayListName.get(i).getID để lấy id…

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?