MST
星途 面试题库

面试题:Java异常处理中如何自定义异常类并合理应用提升用户体验

请阐述在Java中自定义异常类的步骤,并且结合一个具体的业务场景,说明如何通过抛出和捕获自定义异常来改善用户体验,比如在一个图书管理系统中借书功能模块。
31.3万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 自定义异常类步骤
    • 继承异常类:自定义异常类需要继承Exception类(如果是受检异常)或者RuntimeException类(如果是非受检异常)。例如,定义一个自定义受检异常:
    public class BookNotAvailableException extends Exception {
        public BookNotAvailableException(String message) {
            super(message);
        }
    }
    
    • 提供构造函数:通常至少提供一个带String参数的构造函数,用于传递异常信息。上述代码中BookNotAvailableException(String message)就是这样一个构造函数,它将异常信息传递给父类Exception的构造函数。
  2. 在图书管理系统借书功能模块中的应用
    • 业务场景:在图书管理系统的借书功能中,当用户尝试借阅一本当前库存为0的图书时,需要抛出异常来提示用户该图书不可借。
    • 抛出异常
    public class Book {
        private String title;
        private int stock;
    
        public Book(String title, int stock) {
            this.title = title;
            this.stock = stock;
        }
    
        public void borrow() throws BookNotAvailableException {
            if (stock <= 0) {
                throw new BookNotAvailableException("The book \"" + title + "\" is not available for borrowing.");
            }
            stock--;
            System.out.println("You have successfully borrowed the book \"" + title + "\".");
        }
    }
    
    • 捕获异常
    public class Library {
        public static void main(String[] args) {
            Book book = new Book("Effective Java", 0);
            try {
                book.borrow();
            } catch (BookNotAvailableException e) {
                System.out.println("Error: " + e.getMessage());
            }
        }
    }
    
    在上述代码中,Book类的borrow方法在图书库存不足时抛出BookNotAvailableException异常。在Library类的main方法中,通过try - catch块捕获该异常,并向用户输出友好的错误提示信息,从而改善用户体验。这样可以让用户清楚知道借书失败的原因是图书不可用,而不是系统出现了不明原因的错误。