我看到大量抛出XExc,YExc,ZExc或抛出异常或捕获XExc,YExc,ZExc或cacth异常激增的java代码。 C#很不错,因为这种异常扩散不会发生。
实际上,抛出和捕获异常是无益的,它也只是runtimeException。 12个异常的列表实际上并没有更好,因为有些像IOException,我们不知道在运行时之前的真正含义。然后在像StringReader这样的实现之上看起来就像扔了一样,你必须捕获一个永远不会发生的异常。
最后,异常最终被包装导致无法捕获正确异常的问题。这可能是最大的气味,有些人可能认为没有人应该包装。相反,我想看看我是否可以编译而没有java中的检查异常。
我们有很多像
这样的代码 try {
return getSelectorManager().registerChannelForRead(this, dataListener).thenApply(v -> {
isRegisterdForReads = true;
return this;
});
} catch (IOException e) {
throw new NioException(e);
} catch (InterruptedException e) {
throw new NioException(e);
}
我也想知道这是否会起作用,因为二进制兼容性会很奇怪,因为如果没有打开相同的选项就无法捕获IOException,因此只有设置相同选项的客户端才能工作。