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个以上的自定义异常,我觉得包或项目将被单独的异常类文件弄乱,这些文件只包含几行。