一个可能的原因是因为NullPointerException是一个运行时异常是因为每个方法都可以抛出它,因此每个方法都需要“抛出NullPointerException”,并且会很难看。但是这会发生在RemoteException上。
因为RemoteException不是运行时异常,可能的原因是告诉客户端处理异常。但是远程环境中的每个方法都需要抛出它,因此抛出NullPointerException没有区别。
思考?我清楚了吗?
答案 0 :(得分:18)
答案 1 :(得分:4)
NullPointerException
的潜力远远大于RemoteException
。任何调用对象上的方法的代码(实际上几乎都是任何Java代码)都可能抛出NullPointerException
。只有RMI代码才能抛出RemoteException
。这是“所有代码”的一小部分。
在编写RMI库时,设计人员决定使客户端代码期望处理这些异常。考虑到远程代码执行的性质,我认为这是合理的。
答案 2 :(得分:2)
我理解的方式是:
例如,始终可以避免NullPointerExceptions,因此是未经检查的异常。当网络出现故障时可能会发生RemoteException,这在方法调用之前无法合理地阻止,因此会被检查。
答案 3 :(得分:0)
除RemoteException
仅适用于来自java.rmi
和javax.rmi
个包(及其子包)的代码外,RemoteException
是一种IOException
,非常类似{ {1}}是......并且所有SocketException
都是已检查的例外。