Java练习题 · 异常处理篇
- 1️⃣ 异常处理篇
- 2️⃣ 答案
1️⃣ 异常处理篇
一、填空题
Throwable
下的两个子类是______________ 、______________ 。ArthmeticException
类表示______________ 异常,ArraysIndexOutOfBoundsException
表示______________ 异常。- 一个
try
代码后面必须跟着若干个_______ 代码段或者一个_______ 代码段。 - 如果一个方法使用了_______ , 则编译器会强制在使用此方法时进行异常的处理。
- 异常处理中使用_______ 作为异常的统一出口。
二、选择题
使用( )关键字可以在程序中手工抛出异常。
A. throws
B. throw
C. assert
D. class下面( )关键字可以用在方法的声明处。
A. throws
B. assert
C. class
D. interface为了捕获一个异常,代码必须放在下面( )中。
A. try 块
B. catch块
C. throws块
D. finally 块下面关于try块的说法正确的是( )。
A. try块后至少应有一个 catch块
B. try 块后必须有finally 块
C. 可能抛出异常的方法应放在try块中
D. 对抛出的异常的处理应放在try块中finally 块中的代码将( )。
A. 总是被执行
B. 如果 try块后面没有 catch 块时, finally 块中的代码才会执行
C. 异常发生时才被执行
D. 异常没有发生时才执行一个异常将终止( )。
A. 整个程序
B. 只终止抛出异常的方法
C. 产生异常的 try块
D. 上面的说法都不对所有异常的共同父类是( )。
A. Error
B. Exception
C. Throwable
D. RuntimeException
三、判断题
- 一个try语句后有多个catch 时,捕获范围大的异常要放在捕获范围小的异常之后。 ( )
- finally 语句可以根据需要有选择地添加。 ( )
四、 简答题
- 简述 RuntimeException 和 Exception 的区别。
- try、catch、finally 三种语句的功能是什么?
- 简述Java 中的异常处理机制。
- 简述 Error 和 Exception 的区别。
- 列举三个常见的 RuntimeException 子类。
五、 编程题
- 编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序中捕获 NumberFormatException 异常和 ArithmeticException 异常。
2️⃣ 答案
一、填空题
Error
、Exception
- 算术异常, 数组索引越界异常
catch
,finally
throws
finally
二、选择题
- ( B )
- ( A )
- ( A )
- ( C )
- ( A )
- ( B )
- ( C )
三、判断题
- (√)
- (√)
四、简答题
RuntimeException
和Exception
的区别如下:RuntimeException
是Exception
的子类,属于不受检异常(Unchecked Exception)。RuntimeException
及其子类是由程序错误或逻辑错误引起的异常,通常是可以被避免的异常。Exception
除了RuntimeException
及其子类外,还包括其他的受检异常(Checked Exception)。- 受检异常需要在方法声明中明确地进行处理或抛出,否则编译器会报错,要求进行异常处理。
三种语句的功能如下:
try
块:包含可能抛出异常的代码,并用于标识需要进行异常捕获和处理的代码块。catch
块:用于捕获并处理特定类型的异常,在try
块中抛出异常时,可以根据异常的类型在相应的catch
块中执行对应的处理逻辑。finally
块:无论是否发生异常,都会执行的代码块。通常用于释放资源或保证某些操作被执行。
Java 中的异常处理机制如下:
- 异常是在程序执行过程中出现的不正常情况,可以分为两类:已检查异常(Checked Exception)和未检查异常(Unchecked Exception)。
- 已检查异常需要在方法声明中明确地进行处理或抛出,由开发人员根据需要决定如何处理异常。
- 未检查异常是由程序错误或逻辑错误引起的异常,通常是可以被避免或修复的异常,不要求强制性处理。
- 异常可以使用
try-catch
块捕获并处理,也可以使用throws
关键字将异常抛给上层调用者处理。 - 可以在
catch
块中根据异常类型进行不同的处理逻辑,或者在finally
块中进行必要的清理和释放资源操作。
Error
和Exception
的区别如下:Error
是Throwable
的子类,表示严重错误或系统错误,通常是无法恢复或继续执行的错误。Error
表示的是 JVM 或者硬件等环境相关的错误,开发人员一般无法通过代码来直接处理Error
。Exception
是Throwable
的另一个子类,包括了程序运行过程中可能出现的可处理的异常情况。Exception
可以根据情况进行捕获和处理,或者继续抛出以便上层调用者处理。编译器会强制要求对受检异常进行处理。
常见的
RuntimeException
子类包括:NullPointerException
: 空指针异常,当变量引用为null
时进行操作会抛出此异常。IllegalArgumentException
: 非法参数异常,当传递给方法的参数不满足要求时抛出。IndexOutOfBoundsException
: 索引越界异常,当使用非法的索引访问数组或集合时抛出。
五、 编程题
代码如下:
import java.util.Scanner;public class DivideNumbers {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);try {System.out.print("请输入被除数: ");double dividend = Double.parseDouble(scanner.nextLine());System.out.print("请输入除数: ");double divisor = Double.parseDouble(scanner.nextLine());double quotient = divide(dividend, divisor);System.out.println("商为: " + quotient);} catch (NumberFormatException e) {System.out.println("输入的参数不是有效的小数格式");} catch (ArithmeticException e) {System.out.println("除数不能为0");}scanner.close();}public static double divide(double a, double b) {return a / b;}}