Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在同一方法中使用抛出和尝试捕获_Java_Exception_Try Catch_Throws_Illegalaccessexception - Fatal编程技术网

Java 在同一方法中使用抛出和尝试捕获

Java 在同一方法中使用抛出和尝试捕获,java,exception,try-catch,throws,illegalaccessexception,Java,Exception,Try Catch,Throws,Illegalaccessexception,我们可以用同样的方法使用投掷和试抓吗 public class Main { static void t() throws IllegalAccessException { try{ throw new IllegalAccessException("demo"); } catch (IllegalAccessException e){ System.out.println(e); } } public static void mai

我们可以用同样的方法使用投掷试抓

public class Main
{
static void t() throws IllegalAccessException {
    try{
    throw new IllegalAccessException("demo");
} catch (IllegalAccessException e){
    System.out.println(e);
}
    
}
    public static void main(String[] args){
        t();
        System.out.println("hello");
    }
}
显示的错误为

Main.java:21: error: unreported exception IllegalAccessException; must be caught or declared to be thrown
        t();
         ^
1 error
因此,我考虑修改代码,并在main()方法中添加了另一个throws语句,其余的都是相同的

public class Main
{static void t() throws IllegalAccessException {
    try{
    throw new IllegalAccessException("demo");
} catch (IllegalAccessException e){
    System.out.println(e);
}
    
}
    public static void main(String[] args) throws  IllegalAccessException{
        t();
        System.out.println("hello");
    }
}
但现在我得到了所需的输出。 但是我有一些问题

我们可以用单一的方法来使用投掷和尝试捕捉吗? 在我的例子中,是否有必要添加two-throws语句,如果没有,请告诉我在代码中添加的适当位置?

 void t() throws IllegalAccessException
您告诉编译器此代码抛出异常(是否抛出是另一回事),因此任何调用此方法的方法要么捕获它,要么声明它也抛出它,等等

由于实际上没有从
t
引发异常,因此可以删除该声明

void t()

是的,您可以,常见的用法是抛出一个
IllegalStateException
,使用tryCatch来使用另一种类型的异常,如
NullPointerException
,或者使用tryCatch来捕获与用户无关的异常,如初始化
java.awt.Robot
的实例。否,您不需要任何
抛出
语句,因为任何方法实际上都不会抛出任何选中的异常。实际上,我是从t()方法抛出一个异常。你能告诉我我是否可以用同样的方法投掷和接球吗?不,你不能。您正在从
try
块中抛出它,它被捕获。不需要将其声明为投掷。