【问题标题】:How to convert Unchecked Exception into Checked Exception and Vice Versa in Java如何在 Java 中将 Unchecked Exception 转换为 Checked Exception 和 Vice Versa
【发布时间】:2014-07-25 10:07:23
【问题描述】:

在 Java 中,如何将 Unchecked Exception 转换为 Checked Exception 并在 Java 中反之。

【问题讨论】:

    标签: java exception


    【解决方案1】:

    您无法转换。相反,您必须包装成所需类型的新异常,例如转换为未选中:

    throw new RuntimeException(checkedException);
    

    或检查:

    throw new Exception(uncheckedException);
    

    (您可能希望选择更有意义/特定的异常类型)

    【讨论】:

    • 不错,如果checkedExceptionnull 怎么办?会发生什么?
    • 当您“转换”checkedException 时,它可能不为空。否则它将是 NullpointerException,未选中。问题解决了;)(鸭子)
    • 如果你捕捉到一个异常,它就不会为空。我假设上述内容将用于 catch() 子句
    【解决方案2】:

    未检查异常是RuntimeException 的子类,检查异常不是。因此,要转换一个异常,您必须更改其继承,然后修复编译器错误,因为您的新检查异常从未被声明或捕获。

    【讨论】:

      【解决方案3】:

      您无法转换它们。它们用于不同的目的。调用者需要处理已检查的异常,而未检查或运行时异常通常不会被明确处理。

      【讨论】:

        【解决方案4】:

        假设您有两个异常类ExceptionAExceptionB;其中一个被选中,另一个未被选中。您想将ExceptionA 转换为ExceptionB

        假设ExceptionB 有一个类似的构造函数

        public ExceptionB(Exception e) {
            super(e);
        }
        

        你可以做类似的事情

        catch (ExceptionA e) {
            throw new ExceptionB(e);
        }
        

        将一个异常类的对象包装在另一个异常类中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-23
          • 2013-09-05
          • 2015-09-05
          • 1970-01-01
          • 2011-07-16
          • 2023-04-03
          • 2019-01-31
          • 1970-01-01
          相关资源
          最近更新 更多