面试题答案
一键面试- 自定义异常类步骤:
- 继承异常类:自定义异常类需要继承
Exception
类(如果是受检异常)或者RuntimeException
类(如果是非受检异常)。例如,定义一个自定义受检异常:
public class BookNotAvailableException extends Exception { public BookNotAvailableException(String message) { super(message); } }
- 提供构造函数:通常至少提供一个带
String
参数的构造函数,用于传递异常信息。上述代码中BookNotAvailableException(String message)
就是这样一个构造函数,它将异常信息传递给父类Exception
的构造函数。
- 继承异常类:自定义异常类需要继承
- 在图书管理系统借书功能模块中的应用:
- 业务场景:在图书管理系统的借书功能中,当用户尝试借阅一本当前库存为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
块捕获该异常,并向用户输出友好的错误提示信息,从而改善用户体验。这样可以让用户清楚知道借书失败的原因是图书不可用,而不是系统出现了不明原因的错误。