Java 异常类对象的类型为选中或未选中

Java 异常类对象的类型为选中或未选中,java,exception-handling,Java,Exception Handling,若异常类对象被认为是选中的:即使异常对象永远不会从go方法中抛出,该代码也可以很好地编译。实际上,可以从try块抛出的已检查异常将得到处理,没有其他异常。所以它不能被检查 若异常类对象被认为是未选中的:异常类不是Error或RuntimeException的子类,所以它不能被选中 请帮助我理解。。。它是哪种类型的对象。RuntimeException是Exception的子类,因此您的catch块会同时拾取选中和未选中的异常。RuntimeException是Exception的子类,因此您的

  • 若异常类对象被认为是选中的:即使异常对象永远不会从go方法中抛出,该代码也可以很好地编译。实际上,可以从try块抛出的已检查异常将得到处理,没有其他异常。所以它不能被检查

  • 若异常类对象被认为是未选中的:异常类不是Error或RuntimeException的子类,所以它不能被选中


请帮助我理解。。。它是哪种类型的对象。

RuntimeException是Exception的子类,因此您的catch块会同时拾取选中和未选中的异常。

RuntimeException是Exception的子类,因此您的catch块会同时拾取选中和未选中的异常。

检查此链接

类异常和任何不属于RuntimeException子类的子类都是检查异常

因此,要回答您的问题,这是一个选中的异常。

检查此链接

类异常和任何不属于RuntimeException子类的子类都是检查异常


所以为了回答您的问题,它是一个检查异常。

异常类被视为检查异常

选中异常意味着您需要在Try-catch中包含引发异常的方法

否则,您需要添加throws声明,以便调用它的父方法将处理exeception。

异常类被视为选中异常

选中异常意味着您需要在Try-catch中包含引发异常的方法
否则,您需要添加throws声明,以便调用它的父方法能够处理exeception。

这实际上更像是一种排除;它既不是
错误
,也不是
运行时异常
,两者都被视为未选中

未检查的异常类是运行时异常类和错误类

选中的异常类是除未选中的异常类之外的所有异常类。也就是说,选中的异常类都是
Throwable
的子类,而不是
RuntimeException
及其子类和
Error
及其子类

这就是说,您设计的示例仍然可以编译,因为
Exception
是所有运行时异常的超类,出于某种原因,这些异常预计会被捕获到您的代码块中。由于您没有声明要在
go
上抛出的
异常
,因此不需要捕获它,因为它不是已检查的异常

不要在生产中使用这样的代码,因为任何选中的异常或运行时异常都会被该块捕获。

这实际上是一种排除;它既不是
错误
,也不是
运行时异常
,两者都被视为未选中

未检查的异常类是运行时异常类和错误类

选中的异常类是除未选中的异常类之外的所有异常类。也就是说,选中的异常类都是
Throwable
的子类,而不是
RuntimeException
及其子类和
Error
及其子类

这就是说,您设计的示例仍然可以编译,因为
Exception
是所有运行时异常的超类,出于某种原因,这些异常预计会被捕获到您的代码块中。由于您没有声明要在
go
上抛出的
异常
,因此不需要捕获它,因为它不是已检查的异常

不要在生产中使用这样的代码,因为任何选中的异常或运行时异常都将被该块捕获

  • 如果认为异常类对象已选中
是的

这段代码编译得很好,即使异常对象永远不会从go方法中抛出

你不会知道的。可能存在运行时异常。

实际上,可以从try块抛出的已检查异常将得到处理,没有其他异常

那是不对的。捕获已检查的异常和运行时异常

所以它不能被检查

从虚假前提中扣除的金额无效

  • 如果异常类对象被视为未选中
检查过了。不需要考虑其余的事情。

Exception类不是Error或RuntimeException的子类,因此不能取消选中它

  • 如果认为异常类对象已选中
是的

这段代码编译得很好,即使异常对象永远不会从go方法中抛出

你不会知道的。可能存在运行时异常。

实际上,可以从try块抛出的已检查异常将得到处理,没有其他异常

那是不对的。捕获已检查的异常和运行时异常

所以它不能被检查

从虚假前提中扣除的金额无效

  • 如果异常类对象被视为未选中
检查过了。不需要考虑其余的事情。

Exception类不是Error或RuntimeException的子类,因此不能取消选中它


正确。

异常类本身不是已检查异常。.已检查异常是异常类的子级异常,例如IOException等 有两件事..
1-你在扔吗??
2-你是说在catch子句中声明它吗?


让我们用例子来演示它

1-如果您要抛出除(RuntimeException或其子类)之外的任何异常类,那么您必须通过catch子句处理它或通过throws声明它。无论它是异常类还是Throwable或其他选中的异常

import java.io.*;
class a {
    public static void main(String [] args) {
        try {
            new a().go();
        }
        catch(Exception e) {
            System.out.println("catch");
        }   
    }

    void go() {}
}
现在调用方法必须处理或声明它
void go() throws Exception
{ 
throw new Exception();
} //you have to handle or declare it
void callingMethod()
{
  try{ } // NO NEED TO THROW Exception OR Thowable
  catch(Exception e){ 
      e.printStakeTrace(); 
  }
}
void callingMethod()
{
  try{ } // here is compiler error..it says you have to through it
  catch(IOException e){ 
      e.printStakeTrace(); 
  }
}