当前位置: 首页 > 图灵资讯 > java面试题> 初级java面试题-什么是受检异常和非受检异常?

初级java面试题-什么是受检异常和非受检异常?

来源:图灵教育
时间:2024-07-10 13:36:20

在Java编程中,异常分为两大类:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。这两类异常的区别主要在于它们的处理方式和编译器的要求。

受检异常(Checked Exception)

  1. 定义:受检异常是在编译时被检查的异常。编译器会要求你必须处理这些异常,否则程序就不能编译通过。
  2. 处理方式:你必须使用try-catch块来捕获并处理这些异常,或者在方法声明中使用throws关键字将异常抛出。
  3. 常见例子IOExceptionSQLException等都是受检异常。

举个例子,当你在程序中试图读取一个文件时,如果文件不存在,程序会抛出一个FileNotFoundException,这是一个受检异常。你必须处理这个异常,否则程序无法编译通过。

非受检异常(Unchecked Exception)

  1. 定义:非受检异常是在运行时被检查的异常,编译器不会强制要求你处理这些异常。
  2. 处理方式:你可以选择处理这些异常,但编译器不会强制要求。即使你不处理这些异常,程序也可以编译通过,但在运行时可能会发生崩溃。
  3. 常见例子NullPointerExceptionArrayIndexOutOfBoundsExceptionArithmeticException等都是非受检异常。

举个例子,当你试图访问一个空对象(即null)的方法或属性时,程序会抛出一个NullPointerException,这是一个非受检异常。你可以选择处理这个异常,但即使不处理,程序也能编译通过,只是在运行时会出现问题。

总结

  • 受检异常:编译器强制要求你处理,常用于一些可预见的外部错误,比如文件操作、数据库操作等。
  • 非受检异常:编译器不强制要求你处理,通常是由于编程错误导致的,比如空指针引用、数组越界等。