java 抛出异常语句位置问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:29:11
import java.io.*;
public class J_example
{
public static void main(String[]args)
{
try
{ throw new IOException () ;//为什么异常语句在这里就不行呢?
RandomAccessFile f = new RandomAccessFile("test.txt","rw");//有异常不是不能执行到这一句?
int i ;
double d ;
for(i=0;i<10;i++)
{
f.writeDouble(Math.PI*i);

}
f.seek(16);
f.writeDouble(0);
f.seek(0);
for(i=0;i<10;i++)
{
d=f.readDouble();
System.out.println("["+i+"]:"+d);
}

}

catch(IOException e)
{
System.out.println(e);
System.exit(-1);
}
}
}
编译时出现:无法访问的语句 RandomAccessFile f = new RandomAccessFile("test.txt","rw");

为什么呢,不是不会执行到它吗?
try 里是可以抛出异常的,但是抛出以后不是应该执行相应的catch语句吗,为什么会提示错误呢?

throw new IOExceptio

try块内可以写throw来抛出一个异常,并且你理解的是对的,抛出异常之后,发生异常的语句之后的语句不会被执行,所以RandomAccessFile f = new RandomAccessFile("test.txt","rw");的确是不会被执行的。

但是正因为RandomAccessFile f = new RandomAccessFile("test.txt","rw");这句肯定不会被执行,所以根本没有必要写在后面,是废代码,所以会报错。你觉得废代码最多就是不用,你觉得不算错,但是JVM不这样认为。

你可以在return语句下面再写语句,你就会发现一样报错。原因也是这个。return之下的代码是肯定不会被执行的。

那肯定是不会执行到的啊,因为你在throw new IOException () 这个语句的时候已经抛了异常了,说明到此为止,这个处理是不正确的,自然下面的代码也就得不到执行了

没有这样用过!

try
{ throw new IOException () ;//为什么异常语句在这里就不行呢?
.......
}
你把throw写在这里..就类似是用了一个break语句
就是不加条件的直接跳出....