Java:具有多个异常的自定义异常类

Java:具有多个异常的自定义异常类,java,exception,Java,Exception,我习惯于在C++中编程,在一个类中声明多个自定义异常:,然后使用throw new exceptionnumerionbeyondd()调用这些自定义异常 在Java中如何实现这一点 根据我在Java中所学的内容,必须在其各自的类中定义每个异常。我是否可以拥有一个exceptions类,该类包含多个自定义异常,就像在c++中一样,并在它们被违反时调用throw命令 我打算在这样的试抓块中使用它 try { if(...) throw new customExcepti

我习惯于在
C++
中编程,在一个类中声明多个自定义异常:,然后使用
throw new exceptionnumerionbeyondd()
调用这些自定义异常

在Java中如何实现这一点

根据我在Java中所学的内容,必须在其各自的类中定义每个异常。我是否可以拥有一个exceptions类,该类包含多个自定义异常,就像在
c++
中一样,并在它们被违反时调用throw命令

我打算在这样的试抓块中使用它

     try {

        if(...) throw new customException1();
        else ...

     } catch (customException1) {

     } catch (customException2) {

     } ...

我将尝试用Java给出几个例子,因为从图片和您的陈述中我不确定:

您可以在一个单独的数据库中声明多个自定义异常 类别:

您的确切意思是在一个类中声明多个自定义异常

接口 在Java中,您可以定义一个
接口
,并实现它,然后在键入时使用它,如下所示:

interface CustomException {
   String getMessage();
}
然后创建一个实现它的类

class ApplicationException implements CustomException {
  public String getMessage() {
    return "Uh oh..";
  }
}
当你扔掉任何东西时,你只需捕获
CustomException

try {
   // do something
}
catch( CustomException ce) {
  // do something with the CustomException
}
基类 另一种方法是扩展一个内置的异常类,如
RuntimeException
或只是
Exception
本身

class CustomException extends Exception {
  public CustomException(String message) {
    super(message);
  }
}
然后,您可以从该自定义类进行扩展,并像平常一样在键入时使用它

class ApplicationException extends CustomException {
  public ApplicationException(String message) {
    super(message);
  }
}
然后,这又像以前一样工作:

try {
   // do something
}
catch( CustomException ce) {
  // do something with the CustomException
}
在捕捉器内,你可以一次抓住它们。如果需要对不同的捕获执行不同的逻辑,可以执行单独的
catch
块,否则可以执行的另一个选项是:

try {
 // do something
}
catch ( ApplicationException | IllegalArgumentException e) {
  // do something with an error that is either a ApplicationException or a IllegalArgumentException
}
非常规 为了完整起见,我把这个放在这里,但它不是常规的。您可以在项目中创建一个名为
Exception.java
的文件。在内部,您可以定义任意数量的类,也可以通过导入来引用它们,但这不是编写Java的惯用方法

所以在
Exception.java中:

class CustomException extends Exception {
  public CustomException(String message) {
    super(message);
  }
}

class ApplicationException extends Exception {
  public ApplicationException(String message) {
    super(message);
  }
}

<希望这能帮助你走出去,继续你的旅程。

在你的C++例子中看起来像多个类,不确定你想要在这里实现什么?@ Joakim,C++中,你可以通过在上面给出的头文件中使类定义新的自定义异常,而不为它们定义类文件。然后您可以通过简单地调用“抛出新的customException”来抛出这些异常。。。在这幅图中,我没有编写一行代码来定义任何自定义异常,这些都是该示例中用户定义的。我想知道在java中是否有类似的方法,而且似乎也有类似的方法,如果你看到-StealthyCoder的答案,他所谓的“非常规”就是我想要的。@StealthyCoder,谢谢!你的非传统方式正是我想要的!包含不同类型自定义异常的exceptions类!如果有5个以上的自定义异常,我觉得包或项目将被单独的异常类文件弄乱,这些文件只包含几行。