AboutException
import javax.swing.*;

class AboutException {
public static void main(String[] a)
{
int i=1, j=0, k;
k=i/j;

try
{
	
	k = i/j;    // Causes division-by-zero exception
	//throw new Exception("Hello.Exception!");
}

catch ( ArithmeticException e)
{
	System.out.println("��0��.  "+ e.getMessage());
}

catch (Exception e)
{
	if (e instanceof ArithmeticException)
		System.out.println("��0��");
	else
	{  
		System.out.println(e.getMessage());
		
	}
}


finally
 {
 		JOptionPane.showConfirmDialog(null,"OK");
 }

}
}

image
要解释这两个现象,可从Java 对整数和浮点数除以零的不同处理逻辑来分析:

  1. 整数除法(int i/j)引发异常
    在 Java 中,整数类型(int、long等)的除法运算里,除以 0 是数学上的无意义操作,因此 Java 会明确抛出 java.lang.ArithmeticException: / by zero 异常,强制开发者处理这种非法运算。
  2. 浮点数除法(double d1/d2)不引发异常
    对于浮点数类型(float、double),Java 遵循IEEE 754 浮点数规范:当浮点数除以 0 时,结果被定义为无穷大(Infinity),属于合法的浮点特殊值,因此不会抛出异常,而是返回Infinity来表示这个结果。
    简言之,差异源于整数和浮点数在 “除以 0” 场景下的语义定义不同:整数除法严格拒绝除以 0 的操作,浮点数则通过 “无穷大” 的特殊值来兼容这种运算。image

finally的作用
image
(最后执行)
image

image

image
image

image

image

当存在多层嵌套的finally语句块时,异常在不同层次、不同位置抛出,可能会导致finally语句块的执行顺序不同。
image
不执行的典型场景及示例
程序被强制终止:通过System.exit(0)直接终止虚拟机,后续代码(包括 finally)均不执行。
示例:
java
运行
try {
System.out.println("try块执行");
System.exit(0); // 强制终止程序
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("finally块执行"); // 不会输出
}
线程被中断或死亡:执行 try 块的线程被其他线程中断(Thread.interrupt())或直接销毁,且未触发异常处理流程。
示例:
java
运行
Thread t = new Thread(() -> {
try {
System.out.println("线程执行try块");
Thread.currentThread().stop(); // 强制停止线程(已过时,但能演示效果)
} finally {
System.out.println("finally块执行"); // 不会输出
}
});
t.start();
运行环境崩溃:如虚拟机崩溃、电脑断电、进程被强制杀死等硬件或系统级异常,程序直接终止。
image

image
这段代码无法通过编译的核心原因是未正确处理受检异常(Checked Exception)。
具体分析如下:FileInputStream的构造方法(如new FileInputStream("a.txt"))在 Java 中被声明为会抛出IOException(这是一种受检异常)。根据 Java 语法规则:
对于受检异常,必须显式处理 —— 要么用try-catch块捕获并处理,要么在方法声明中通过throws关键字声明该异常由调用者处理。
而示例中的main方法:
既没有用try-catch块捕获IOException;
也没有在main方法的声明中添加throws IOException来声明抛出该异常。
因此违反了 Java 对受检异常的强制处理规则,编译器会直接报错,导致无法通过编译。

posted on 2025-10-30 19:13  douzishuo  阅读(1)  评论(0)    收藏  举报