我最近遇到了一个程序员编写的代码,他在catch中有一个try-catch语句! 请原谅我无法粘贴实际代码,但他所做的与此类似: try { //ABC Operation } catch (ArgumentException ae) { try { //XYZ Operation } catch (IndexOutOfRangeException ioe) { //Something } } 我个人觉得这是我见过的最差的代码! 在1到10的范围内,你认为我应该多久去给他一点心思,还是我过度反应? 编辑:他在捕获中实际做了什么,他正在执行一些操作,这些操作可以/应该在初始尝试失败时完成。 我的问题是拥有干净的代码和可维护性。 将第一个catch的exception委托给另一个函数或调用函数就可以了,但是添加更多代码可能会或者可能不会将exception抛入第一个catch,这是我觉得不好的。 我试图避免多个堆叠的“if-loop”语句,我发现这同样糟糕。
我需要在Spring 3.0应用程序中显示自定义消息。 我有一个Hibernate数据库,有几个约束。 我对如何以良好的方式处理DataIntegrityViolationException有疑问。 我想知道是否有一种方法可以在属性文件中使用消息集映射exception,因为它可以在约束validation中使用。 我能以任何方式自动处理它,或者我必须在每个控制器中捕获此exception吗?
Spring 3.2引入了@ControllerAdvice注释来处理Spring MVC应用程序中的exception。 但在此版本之前,Spring使用@ExceptionHandler或HandlerExceptionResolver来处理Spring MVC应用程序中的exception。 那么为什么Spring 3.2引入了@ControllerAdvice注释来处理exception呢? 我坚信Spring 3.2引入了@ControllerAdvice注释来解决 @ExceptionHandler或HandlerExceptionResolver 的局限性,或者使exception处理更加强大 。 任何人都可以解释@ControllerAdvice优于@ExceptionHandler或HandlerExceptionResolver处理exception的优势吗?
我是Java新手,刚刚遇到一个在方法中使用“Throws”关键字的教程。 我对此做了一些研究,但仍然没有真正理解它。 从我到目前为止看到的,它告诉编译器在该特定方法中可能抛出某个exception。 为什么我们需要告诉编译器呢? 我在我的方法中只使用了try-catch语句制作了许多程序,并且它运行得很好 – 当然这是管理exception的try-catch语句,对吧?
如果我的Dao层抛出Dao特定exception,那么在我的服务层处理它们是否会引起关注? 如果是,那么我应该将exception设为通用且独立于任何层来解决它,还是有其他方法? 同样的问题适用于服务层抛出的UI层处理exception。
Exception in thread “main” java.util.InputMismatchException 在我使用扫描仪类的时候它对我来说意味着什么? 完整的堆栈跟踪是 Exception in thread “main” java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at ParseString.main(ParseString.java:9)
我正在申请中处理exception处理。 我使用try catch块来捕获代码中出现的exception,我还可以通过编写监听器并在“faces-config.xml”中注册监听器来处理超时exception。 但是我遇到了在构造函数或错误代码500,400等中捕获意外错误(例如“NullPointerException”)的问题。 我使用了“web.xml”中的标签 java.lang.Exception /sc00/ErrorPage.jsp 我尝试了很多方法来处理exception,任何人都可以帮助我找到解决方案。 我尝试处理这些exception时得到的错误如下。 我使用的是JSF 1.2,服务器是websphere 8 控制台显示以下exception。 com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0014E: Uncaught service() exception root cause Faces Servlet: javax.servlet.ServletException E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: An exception was thrown by one of the service methods of the servlet [/sc00/ErrorPage.jsp] in application [MembershipEligibilityScreensEAR]. Exception created : [java.lang.RuntimeException: FacesContext not found 我的错误页面位于/WebContent/sc00/ErrorPage.jsp中,ErrorPage.jsp没有与之关联的辅助bean。 许多解决方案让我看看Faces Servlet的URL路径,在我的web.xml中,servlet-mapping是如下 […]
在Java中,是否有一种优雅的方法来检测在运行finally块之前是否发生了exception? 处理“close()”语句时,通常需要在finally块中进行exception处理。 理想情况下,我们希望保留两个exception并将它们传播(因为它们都可能包含有用的信息)。 我能想到的唯一方法就是在try-catch-finally范围之外设置一个变量来保存对抛出exception的引用。 然后使用finally块中出现的任何内容传播“已保存”的exception。 这样做有更优雅的方式吗? 也许API调用会揭示这个? 这是我正在谈论的一些粗略代码: Throwable t = null; try { stream.write(buffer); } catch(IOException e) { t = e; //Need to save this exception for finally throw e; } finally { try { stream.close(); //may throw exception } catch(IOException e) { //Is there something better than saving the exception from the exception […]
给定一个Scene的控制器调用业务代码,该代码引发exception。 我怎样才能以一般方式处理这种exception? 我尝试了Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler)方法但是没有调用它,所以我相信exception会被Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler)到JavaFX框架内的某个地方。 我该怎么做才能处理此exception或至少向用户显示一些有用的信息?
public class Abc { public static void main(String args[]) { System.out.println(Abc.method()); } static int method() { try { throw new Exception(); } catch(Exception e) { throw new Exception(); } finally { return 4; } } } 为什么返回值为4?