Tag: exception处理

在Java中处理RuntimeExceptions

任何人都可以解释如何处理Java中的运行时exception?

Javaexception – 在没有try catch的情况下处理exception

在Java中,我们使用try catch块处理exception。 我知道我可以编写一个类似下面的try catch块来捕获方法中抛出的任何exception。 try { // do something } catch (Throwable t) { } 但是Java中是否有任何方法允许我在exception发生时获取一个特定的方法,而不是像上面那样编写一个catch-all方法? 具体来说,我想在抛出exception时(在我的应用程序逻辑中没有处理)在我的Swing应用程序中显示用户友好的消息。 谢谢。

试图提示用户从catch块重新进入,但catch块终止了吗?

我正在尝试编写一个程序,要求用户输入他们的年龄并提示他们重新输入,如果他们输入了不正确的值(例如负数,年龄超过120,年龄有特殊字符或字母,范围号等…) 我尝试写一个try / catch来要求用户重新输入他们的年龄: System.out.println(“Enter your age (a positive integer): “); int num; try { num = in.nextInt(); while (num 120) { System.out.println(“Bad age. Re-enter your age (a positive integer): “); num = in.nextInt(); } } catch (InputMismatchException e) { //System.out.println(e); System.out.println(“Bad age. Re-enter your age (a positive integer): “); num = in.nextInt(); } 当输入的年龄包含特殊字符/字母或超出范围时,程序会打印出“Bad […]

理解Java堆栈

有这个代码: public class Main { public static void main(final String[] args) throws Exception { System.out.print(“1”); doAnything(); System.out.println(“2”); } private static void doAnything() { try { doAnything(); } catch (final Error e) { System.out.print(“y”); } } } 还有输出: 1yyyyyyyy2 为什么它打印“y”八次而不再打印。 遇到StackOverflowError时,Java如何调用println() ?

我希望抛出exception时退出程序的最佳方法是什么?

我正在编写一个读取文件的Java程序。 该程序至关重要地依赖于此文件,所以我真的希望程序在读取文件时因任何原因而导致IOException。 结束该计划的最佳方式是什么? 我想我被迫在try / catch块中包围我的文件读取,所以我应该在catch中添加一个System.exit(0)吗? 例如,我应该做以下的事情吗? try { BufferedReader br = new BufferedReader(new FileReader(“myfile.txt”)); String line; while ((line = br.readLine()) != null) { // process… } } catch(IOException e) { System.out.println(“Error: ” + e); System.exit(0); // ??? }

Swing:从TableModel中捕获exception

我有一个TableModel,如果用户输入无效值,可能会在其setValueAt方法上抛出exception: public class MyTableModel extends AbstractTableModel { public void setValueAt(Object value, int rowIndex, int columnIndex) { String valueStr = (String) value; // some basic failure state if(valueStr.length()>5) { throw new ValidationException(“Value should have up to 5 characters”); } this.currentValue = valueStr; } } 问题是: 另一个类如何能够捕获此exception? 它可能会显示弹出消息,或更新状态栏,或将单元格绘制为红色。 无论我选择做什么,我都不认为TableModel应该这样做。

使用Strutsvalidation框架进行error handling的问题

我有以下定义 struts-config.xml中: 登录表格: public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if (userName == null || userName.length() < 1) { System.out.println("in validate —"); errors.add("userName", new ActionMessage("error.userName.required")); // TODO: add 'error.name.required' key to your resources } if (password == null || password.length() < 1) { errors.add("password", new ActionMessage("error.password.required")); // TODO: add 'error.name.required' […]

无限循环当在try-catch块中捕获InputMidmatchException时

我一直在无限循环中捕获我的代码。 没什么可提升的,但我无法弄明白我的生活! 有人请帮忙 我只是重新创建了特定的错误,没有我在实际程序中的所有if语句。 package bs; import java.util.InputMismatchException; import java.util.Scanner; public class bs { public static void main(String[] args) { Scanner sc = new Scanner(System.in); boolean continueVar = true; while (continueVar) { try { System.out.println(“Enter Something”); int input = sc.nextInt(); } catch (InputMismatchException i) { System.out.println(“What the f***?”); continueVar = true; } } } } […]

如何在Spring中拦截RequestRejectedException?

我在Tomcat日志中看到了大量的RequestRejectedException条目(下面粘贴了样本)。 几个月前,经过次要版本升级(Spring Security 4.2.4,IIRC)之后,这些内容开始出现在我的日志文件中,因此这显然是Spring中默认启用的新安全function。 这里报告了一个类似的问题,但我的问题具体涉及如何在控制器中拦截这些exception。 针对此问题记录了一个Spring Security错误( 提供一种处理RequestRejectedException的方法 )。 但是,在Spring 5.1之前,他们并未针对此问题进行修复。 我理解为什么抛出这些exception ,我不想禁用此安全function 。 我想获得对此function的一些控制,以便: 我知道我不会阻止合法用户访问我的网站。 我可以看到哪些请求触发了这个(它们是SQL注入攻击吗?) 我可以调整服务器响应。 Spring Security防火墙将完整的堆栈跟踪转储到Web客户端(信息泄露),以及500 Internal Server Error (这非常不正确,这应该是400 Bad Request )。 我想找到一种方法来记录所请求的URL,但也可以专门针对这些exception来抑制堆栈跟踪,因为它们会在不给我任何有用信息的情况下污染我的日志文件。 最理想的情况是,我想截取这些exception并在我的应用程序层中处理它们,而不是在Tomcat日志中报告它们。 例如,这是我的catalina.out每天出现的数千个日志条目之一: Aug 10, 2018 2:01:36 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [dispatcher] in context with path [] threw exception org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because […]

何时使用catch以及何时在exception处理中使用throws

问题不在于exception处理语法,而是在通过传播方法的过程中为exception编写catch块的正确位置。 public boolean validateUser(String username, String password) throws SQLException { Connection conn = dataSource.getConnection(); boolean result = false; PreparedStatement pstmt = conn.prepareStatement(“SELECT * FROM USERS WHERE USERNAME=? AND PASSWORD=?”); pstmt.setString(1, username); pstmt.setString(2, password); result = pstmt.executeQuery().next(); conn.close(); return result; } 假设method1()调用method2()和方法2 method2()调用上面的方法。 在上面的方法中,如果我处理exception,我必须返回一个值。 让我们假设我在catch块之后返回false ,方法2 method2()误解了用户名或密码错误。 如果我没有处理, method2()将不会收到任何值,它的catch块将执行,并且在method1()会出现同样的问题。 现在,您可以定义在哪里可以有效地处理exception吗?