Java抛出自定义错误
因此,我已经使用Java有一段时间了。从技术上讲,我对这门语言还是新手 我为我正在处理的一个个人项目创建了几个自定义错误,我想知道是否有任何方法可以在不包装Java抛出自定义错误,java,error-handling,try-catch,Java,Error Handling,Try Catch,因此,我已经使用Java有一段时间了。从技术上讲,我对这门语言还是新手 我为我正在处理的一个个人项目创建了几个自定义错误,我想知道是否有任何方法可以在不包装try-catch块的情况下抛出这些错误 抛出这些错误的方法得到了广泛的使用,不必尝试每个单独的语句 这也是一个Java新手和/或未阅读文档的人都不知道的问题 是否有任何方法可以运行这些方法而不必尝试每种方法,记录这些错误的正确方法是什么?使自定义异常扩展RuntimeException类。根据定义,这些不需要声明为从方法抛出,也不需要被调用
try-catch
块的情况下抛出这些错误
抛出这些错误的方法得到了广泛的使用,不必尝试每个单独的语句
这也是一个Java新手和/或未阅读文档的人都不知道的问题
是否有任何方法可以运行这些方法而不必尝试每种方法,记录这些错误的正确方法是什么?使自定义异常扩展
RuntimeException
类。根据定义,这些不需要声明为从方法抛出,也不需要被调用该方法的任何人捕获
请参阅Javadocs。您可以捕获异常或可丢弃 基本上,您只需要捕获抛出的异常类型的超类,因为大多数异常都是Exception和Throwable的子类,两者都将捕获几乎所有内容 此外,不需要在编译时处理RuntimeException。我相信您知道的一个是NullPointerException,它们是RuntimeException。在代码中包含它们不是一个好的实践,但如果必须的话 最好的方法是只处理代码中的异常
编辑:您实际上只需要一个try-and-catch块,您可以使用throws关键字将异常处理传递到更上游的位置,在您的情况下,您可以在那里处理它可能只需要一个try-catch块如果您不想强制代码将这些方法包装到try块中,为什么要让它们抛出异常
让我们考虑这些方法:
public void badMethodOne() throws CustomExceptionOne;
public void badMethodTwo() throws CustomExceptionTwo;
您正在询问如何避免这种情况:
public void myMethod(){
try{
badMethodOne();
}
catch(CustomExceptionOne ex){
ex.printStackTrace();
}
try{
badMethodTwo();
}
catch(CustomExceptionTwo ex){
ex.printStackTrace();
}
}
一种选择是只捕获超类异常:
public void myMethod(){
try{
badMethodOne();
badMethodTwo();
}
catch(Exception ex){
ex.printStackTrace();
}
}
您还可以使用多重捕捉块:
public void myMethod(){
try{
badMethodOne();
badMethodTwo();
}
catch(CustomExceptionOne | CustomExceptionTwo ex){
ex.printStackTrace();
}
}
您还可以将责任“向上传递”,让调用代码的人处理try/catch:
public void myMethod() throws CustomExceptionOne, CustomExceptionTwo{
badMethodOne();
badMethodTwo();
}
Java提供了两种类型的异常:选中和未选中 选中一次是编译器将提示您也要处理的异常(在try-catch块中),而对于未选中的异常,编译器不会要求您处理它们 RuntimeException类是未检查异常的顶级类,因此,如果自定义异常类扩展RuntimeException类,则编译器将不会自动提示您在try-catch块中显式处理它们
基本上,RuntimeException是java认为在执行时发生的异常,而在执行时发生的任何事情(如NullPointerException)都无法处理,因此我们不能在编译时做太多工作。您可以使它们
扩展RuntimeException
,因此可以在抛出块中忽略它们。看到更多我正在寻找的!干杯