Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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_Oop - Fatal编程技术网

Java 异常转换器拦截器。好主意?

Java 异常转换器拦截器。好主意?,java,oop,Java,Oop,我只是想征求一些意见: 您认为使用拦截器类拦截所有异常并将其转换为特定于应用程序的异常是一个好主意吗?基本上,异常处理(而不是其他)从一个类转移到另一个类中 你能在这个问题上给出一些赞成/反对意见吗 谢谢。是的,这是一个合理的想法。以Spring的org.springframework.jdbc.support.SQLExceptionTranslator为例。它特别适合将恼人的已检查异常转换为未检查异常 通常的缺点是复杂性增加——因此这取决于您有多少特定于应用程序的异常。我认为这是一个非常糟糕

我只是想征求一些意见: 您认为使用拦截器类拦截所有异常并将其转换为特定于应用程序的异常是一个好主意吗?基本上,异常处理(而不是其他)从一个类转移到另一个类中

你能在这个问题上给出一些赞成/反对意见吗


谢谢。

是的,这是一个合理的想法。以Spring的
org.springframework.jdbc.support.SQLExceptionTranslator
为例。它特别适合将恼人的已检查异常转换为未检查异常


通常的缺点是复杂性增加——因此这取决于您有多少特定于应用程序的异常。

我认为这是一个非常糟糕的主意。如果我使用一个接口来记录它对某些条件抛出了一个IllegalArgumentException,那么如果满足这个条件,我希望得到一个IllegalArgumentException,而不是一些特定于应用程序的异常

如果它有一个bug并且抛出了一个NullPointerException,我更喜欢得到一个NullPointerException来直接识别问题,而不是让它包含在某个特定于应用程序的异常中,而该异常不告诉问题是什么以及问题在哪里


现在,如果您的类不是AOP意义上的拦截器,而是另一个对象或API的包装器(比如spring jdbc就是jdbc的包装器),并且如果它只以有意义的方式将检查的异常转换为特定于应用程序的异常,我看不出有什么问题。

在我看来,在某些情况下,它可以用来降低复杂性。我有一个带有嵌入式数据库的应用程序;我可能会得到丢失的记录,sql异常,各种各样的东西,这些我都不想报告给我的用户。某些UI类有一个调用另一个调用的方法的方法,等等,在某个地方一些代码运行到其中一个,并开始向上传递它。在特定于应用程序设计的适当级别,我会将其捕获,可能会记录下来,并将其包装在特定于应用程序的异常中,这项工作是生成一条消息,引导我的用户对其执行正确的操作,同时通知他出了问题。特定于应用程序的异常是针对将要查看结果消息的用户定制的,并且可以生成异常以响应我需要捕获但不想报告的一系列“低级”异常。

能否添加一些示例代码来显示您的想法?