【问题标题】:create checked exception class in java [duplicate]在java中创建检查异常类[重复]
【发布时间】:2017-08-29 12:54:46
【问题描述】:

我对在 java 中创建 checked exception class 感到困惑。

很多文章说自定义异常可以由

class MyException extends Exception
{
  //constructor defined
}

因为 RuntimeException 也继承自 Exception 类。

难道不能创建一个只包含 Checked Exceptions 的类吗?

或者我需要指定检查的异常列表

class MyException extends IOException
    {
      //constructor defined
    }

在上面的代码中,我可能会错过某些检查的异常。

【问题讨论】:

  • 这是什么意思:extends IOException, FileNotFoundException ?? java不允许多重继承
  • 你不能从多个类继承,但你可以只用一个语句捕获多个异常(在 Java 7 中引入)。
  • 我记错了。我的意思是扩展特定例外是唯一的可能性吗?

标签: java exception checked-exceptions


【解决方案1】:

这个:

class MyException extends IOException,FileNotFoundException

在 Java 中根本不可能。一个类只能扩展一个其他类。

重点是:

  • 当您扩展 异常时,您正在创建一个已检查的异常。
  • 当你扩展 RuntimeException你正在创建一个未经检查的异常

这就是全部。是的,你是对的,RuntimeException extends Exception 有点 bit 尴尬,但 不是 已检查异常。但这个事实基本上是“融入”到 Java 语言中的,对此你无能为力(除了知道和接受)。

当你更新你的问题时 - 当你这样做时:

public class MyException extends IOException

然后你创建一个checked异常也是一个IOException!准确地说:当您扩展 Exception 或任何子类 ob Exception (except RuntimeException) 时,您正在创建一个检查异常!

【讨论】:

    【解决方案2】:

    不能创建一个只涵盖 Checked 的类吗 例外?

    覆盖异常?
    我认为您误解了异常概念。 您将创建的任何异常都不会涵盖所有异常,因为异常根类是 Exception,而不是您的自定义异常类。

    在上面的代码中,我可能会错过某些情况 检查异常。

    您想表示一个可以包装任何已检查异常的异常吗?
    因此,在您的构造函数类中提供一个字段以将您的异常与任何检查的异常相关联:

    public class MyCheckedException extends Exception
    {
       public MyCheckedException(Exception causeException){
         super(causeException);
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多