任何编译java的方法都不会检查所有异常?

时间:2017-05-12 23:33:08

标签: java

我看到大量抛出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,因此只有设置相同选项的客户端才能工作。

0 个答案:

没有答案