Java 如何用lambda表达式包装helper类中的异常处理

Java 如何用lambda表达式包装helper类中的异常处理,java,exception,lambda,Java,Exception,Lambda,我在尝试重构助手类中的异常处理逻辑时遇到了问题 我的代码使用一个存储库来访问数据库,并可能引发自定义异常RepositoryException。如果存储库引发了此类异常,我希望我的代码捕获它,并在图形用户界面(view)中设置一个错误标签: ..//更多代码 试一试{ existingCourse=repository.findbytle(course.getTitle());//repository.findbytle(course.getTitle())){ view.bathror(em.

我在尝试重构助手类中的异常处理逻辑时遇到了问题

我的代码使用一个存储库来访问数据库,并可能引发自定义异常
RepositoryException
。如果存储库引发了此类异常,我希望我的代码捕获它,并在图形用户界面(
view
)中设置一个错误标签:

..//更多代码
试一试{
existingCourse=repository.findbytle(course.getTitle());//repository.findbytle(course.getTitle())){
view.bathror(em.getExceptionMessage(),当然);
返回;
}
existingCourse=em.getResult();
…//还要一些代码吗
现在,在我看来,与在每次存储库调用中直接使用try-catch相比,这并没有带来任何好处。这主要是因为我需要存储库方法的返回值以及告诉调用方存储库调用是否成功的方法。作为一种变体,我尝试添加
showError
调用在catcher内部,但是我必须在每次调用
catcher
时传递
视图
实体
,我不太喜欢它,因为它会降低代码的可读性


是否有其他方法可以优雅地完成此任务,或者最好在每次调用存储库时都保留try-catch?另外,处理此问题的标准方法是什么?

我想知道,为什么您首先要使用lambdas?您试图实现的好处是什么?我使用lambdas是因为我可以通过任何expressi在我希望在该lambda中,在方法
catcher
内的try/catch块中执行:更具体地说,我可以传递我的存储库的任何方法,例如
repository.findById()
repository.save()
repository.delete()
,等等。是的,但是您也可以在try-catch块中传递任何表达式……我的意思是,lambda表达式在重构中确实有它们的位置,当您可以将它们传递到高阶函数中时。在您的情况下,将lambda表达式传递到“try-catch包装”中有什么意义
ExceptionManager
?它在您的设计中有什么用途?它有助于抽象什么模式?Ciao;-)最初的目的是避免重复文件中相同的代码行:由于对存储库的每次访问都可能引发
RepositoryException
,因此我希望避免对异常重复try/catch。不幸的是,最终抽象异常处理机制的代码似乎添加了太多的样板代码,而我现在觉得原来的try/catch方法更好。谢谢你的承诺。Grazie!我想知道,你为什么要首先使用lambdas?你试图实现的好处是什么?我正在使用lambd因为我可以在lambda中传递我想要的任何表达式,以便在方法
catcher
内的try/catch块中执行:更具体地说,我可以传递我的存储库的任何方法,例如
repository.findById()
repository.save()
repository.delete()
,等等。是的,但是您也可以在try-catch块中传递任何表达式……我的意思是,lambda表达式在重构中确实有它们的位置,当您可以将它们传递到高阶函数中时。在您的情况下,将lambda表达式传递到“try-catch包装”中有什么意义
ExceptionManager
?它在您的设计中有什么用途?它有助于抽象什么模式?Ciao;-)最初的目的是避免重复文件中相同的代码行:由于对存储库的每次访问都可能引发
RepositoryException
,因此我希望避免对异常重复try/catch。不幸的是,最终抽象异常处理机制的代码似乎添加了太多的样板代码,而最初的try/catch方法现在对我来说似乎更好。谢谢你的承诺。谢谢!