1、throw 和 throws 的区别?
throw
和throws
都是 Java 中用于处理异常的关键字,但它们的用法和作用略有不同。
-
throw
:throw
用于在方法内部主动抛出一个异常对象。它后面跟的是一个具体的异常对象,可以是系统定义的异常类,也可以是自定义的异常类。- 当程序执行到
throw
语句时,会立即停止当前方法的执行,并将异常对象抛出给调用者。调用者可以选择捕获并处理这个异常,或者继续向上抛出。 throw
语句通常用于在方法内部处理特定的异常情况,或者在某些条件下强制抛出异常。
-
throws
:throws
用于在方法的声明处声明该方法可能抛出的异常类型。它后面跟的是一个异常类型的列表,可以是多个异常类型,用逗号分隔。- 当一个方法声明了
throws
异常类型后,调用者在调用这个方法时必须处理这些异常,或者继续将异常向上抛出。 throws
语句主要用于方法的定义,它告诉调用者这个方法可能会抛出哪些异常,以便调用者在调用时采取相应的处理措施。
2、final、finally、finalize 有什么区别?
final
、finally
和finalize
是 Java 中的三个关键字,它们的含义和用法如下:
final
:用于修饰变量、方法和类。当变量被final
修饰时,它的值不能被改变;当方法被final
修饰时,它不能被重写;当类被final
修饰时,它不能被继承。finally
:用于在try-catch
块中指定一定会执行的代码块。无论try
块中是否发生异常,finally
块中的代码都会被执行。finalize
:是Object
类的一个方法,用于在对象被垃圾回收之前进行一些清理工作。当对象不再被使用时,垃圾回收器会调用finalize
方法来释放对象占用的资源。
3、try-catch-finally 中哪个部分可以省略?
try-catch-finally
语句是 Java 中用于处理异常的一种机制。它的作用是在程序执行过程中捕获可能出现的异常,并在捕获到异常后执行相应的处理代码。
在try-catch-finally
语句中,try
块是必须存在的,它包含了可能会抛出异常的代码。catch
块用于捕获try
块中抛出的异常,并在catch
块中编写处理异常的代码。finally
块用于在try
块和catch
块执行完毕后执行一些必要的清理工作,无论是否发生异常,finally
块中的代码都会被执行。
以下是一些可以省略catch
块或finally
块的情况:
-
省略
catch
块:如果在try
块中没有抛出异常,或者抛出的异常不需要进行特殊处理,可以省略catch
块。在这种情况下,如果发生异常,程序将会中断,并在控制台输出异常信息。 -
省略
finally
块:如果在try
块和catch
块中已经完成了所有必要的清理工作,或者不需要进行任何清理工作,可以省略finally
块。在这种情况下,程序在执行完try
块和catch
块后,会直接继续执行后面的代码。
需要注意的是,省略catch
块或finally
块可能会导致程序的健壮性降低,因此在实际开发中,应该根据具体情况来决定是否省略catch
块或finally
块。
4、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
try-catch-finally
语句是 Java 中用于处理异常的一种机制。它的作用是在程序执行过程中捕获可能出现的异常,并在捕获到异常后执行相应的处理代码。
在try-catch-finally
语句中,finally
块中的代码无论是否发生异常都会被执行。即使在catch
块中执行了return
语句,finally
块中的代码也会在return
语句之前执行。
5、常见的异常类有哪些?
在 Java 中,异常类是指在程序运行过程中发生的错误或异常情况的类。常见的异常类包括以下几种:
RuntimeException
:运行时异常类,是所有运行时异常的父类。常见的运行时异常包括NullPointerException
(空指针异常)、ArrayIndexOutOfBoundsException
(数组越界异常)、ClassCastException
(类型转换异常)等。IOException
:输入输出异常类,用于处理输入输出操作中发生的异常。SQLException
:数据库操作异常类,用于处理数据库操作中发生的异常。ClassNotFoundException
:类未找到异常类,用于处理在运行时无法找到指定类的异常。NumberFormatException
:数字格式异常类,用于处理将字符串转换为数字时发生的异常。FileNotFoundException
:文件未找到异常类,用于处理在文件操作中无法找到指定文件的异常。ArrayStoreException
:数组存储异常类,用于处理在数组存储操作中发生的异常。SecurityException
:安全异常类,用于处理安全相关的异常。