Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以捕获java中不同逻辑的相同两个异常?_Java_Spring_Exception - Fatal编程技术网

有没有一种方法可以捕获java中不同逻辑的相同两个异常?

有没有一种方法可以捕获java中不同逻辑的相同两个异常?,java,spring,exception,Java,Spring,Exception,我正在编写一个连接到数据库并执行CRUD操作的程序。 我有5种方法:getValues()、createValue(…)、updateValue(…)、getValue(…)、deletevalue(…)。 所有这些方法都会引发相同的两个异常:databaseinvalidRequestException和ServerExpection 按照我现在实现它的方式,我所有的方法都 try{ *some logic* } catch(DatabaseInvalidRequestExcpetion ex

我正在编写一个连接到数据库并执行CRUD操作的程序。 我有5种方法:
getValues()、createValue(…)、updateValue(…)、getValue(…)、deletevalue(…)
。 所有这些方法都会引发相同的两个异常:
databaseinvalidRequestException
ServerExpection

按照我现在实现它的方式,我所有的方法都

try{ *some logic* }
catch(DatabaseInvalidRequestExcpetion ex1) {throw ex1}
catch(ServerExpection ex2) {throw ex2}
我不想在所有函数中重复这些try-and-catch块

我读过Java8中的函数函数接口,但是我的输入很复杂,不能用lambda表达式来完成,因为我检查了逻辑部分的其他内容


有人有什么建议吗?

我知道您在项目中使用spring,因此,如果您想对所有方法应用相同的错误处理逻辑,您可以传播异常并使用以下选项之一:

  • 如果使用spring创建REST端点,则可以创建ExceptionHandler,您可以查看以下文档
  • 如果您使用spring创建不同类型的应用程序,那么您可以使用spring aop和After-through建议,以便在抛出定义的异常时,可以对不同的方法应用相同的逻辑,您可以查看以下文档

  • 我希望这对您有所帮助,如果您需要更多详细信息,请告诉我。您可以使用Spring AOP来实现这一点。您可以在为所有必需的方法(在您的案例中为5个)抛出建议后实现连接点。如果需要,您还可以使用相同的建议来处理从应用程序不同部分引发的任何其他异常类型。

    catch(DatabaseInvalidRequestException | ServerException e){throw e}
    ?你的问题是什么?还要注意,你可能在单个块中做了太多的事情。捕获一个异常,然后在捕获块中立即再次抛出相同的异常是不必要的。您也可以删除
    try
    和catch块(并且只保留try块的内容)。这是web控制器的一部分吗?Spring具有内置的异常处理逻辑,您可以使用它,这样您就不必到处尝试/捕捉自己。如果您不想重复它们,只需使用委托?