为什么NullPointerException是运行时异常而RemoteException不是?

时间:2010-05-21 19:07:47

标签: java exception runtimeexception

一个可能的原因是因为NullPointerException是一个运行时异常是因为每个方法都可以抛出它,因此每个方法都需要“抛出NullPointerException”,并且会很难看。但是这会发生在RemoteException上。

因为RemoteException不是运行时异常,可能的原因是告诉客户端处理异常。但是远程环境中的每个方法都需要抛出它,因此抛出NullPointerException没有区别。

思考?我清楚了吗?

4 个答案:

答案 0 :(得分:18)

答案 1 :(得分:4)

NullPointerException的潜力远远大于RemoteException。任何调用对象上的方法的代码(实际上几乎都是任何Java代码)都可能抛出NullPointerException。只有RMI代码才能抛出RemoteException。这是“所有代码”的一小部分。

在编写RMI库时,设计人员决定使客户端代码期望处理这些异常。考虑到远程代码执行的性质,我认为这是合理的。

答案 2 :(得分:2)

我理解的方式是:

  • 对于可以预防的事情,抛出RuntimeExceptions。
  • 对于那些不可避免但可恢复的事情,会抛出异常
  • 对于那些不可避免且无法恢复的事情,会引发错误。

例如,始终可以避免NullPointerExceptions,因此是未经检查的异常。当网络出现故障时可能会发生RemoteException,这在方法调用之前无法合理地阻止,因此会被检查。

答案 3 :(得分:0)

RemoteException仅适用于来自java.rmijavax.rmi个包(及其子包)的代码外,RemoteException是一种IOException,非常类似{ {1}}是......并且所有SocketException都是已检查的例外。