Tag: exception

为什么在这种情况下允许抛出检查的exception类型?

我偶然注意到这个throw语句(从一些更复杂的代码中提取)编译: void foo() { try { } catch (Throwable t) { throw t; } } 对于一个短暂但快乐的时刻,我认为已经检查过的exception最终决定已经死了,但它仍然很高兴: void foo() { try { } catch (Throwable t) { Throwable t1 = t; throw t1; } } try块不必为空; 它似乎可以有代码,只要该代码不会抛出一个已检查的exception。 这似乎是合理的,但我的问题是,语言规范中的哪些规则描述了这种行为? 据我所知 , §14.18town语句明确禁止它,因为t表达式的类型是一个经过检查的exception,并且它没有被捕获或声明被抛出。 (?)

java.lang.IllegalStateException:在servlet中提交响应后无法转发

在我的项目中,我禁止用户每个页面只有他已经登录。 这就是我写下面代码的原因。 当我输入浏览器时,例如, http:// localhost:8080 / JSP1 / Students ,我来到login.jsp页面。 但在输入loginid和密码后,只显示空白页http:// localhost:8080 / JSP1 / Logged ,GlassFish表示存在exception if (userPath.equals(“/Students”)){ RequestDispatcher requestDispatcher = request.getRequestDispatcher(“/Students.jsp”); requestDispatcher.forward(request, response); } java.lang.IllegalStateException: PWC1227: Cannot forward after response has been committed doGet和doPost的完整代码: @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession ses = request.getSession(); String login = (String)ses.getAttribute(“login”); […]

三层架构和例外

对于每个应用程序层(例如PresentationException , ServiceException , PersistenceException等)都有一个例外,这被认为是一种好习惯。 但是,如果我的服务层直接调用DAO方法(持久层方法)而不需要额外的操作,那该怎么办呢? 喜欢这个: public class MyService { private IPersonDAO dao = new PersonDAO(); public void deletePerson(int id) { dao.deletePerson(id); } } 我应该使用try-catch块包装此DAO方法调用并重新抛出可能的exception作为ServiceException吗? 每个DAO方法应该只抛出PersistenceException吗?

在构造函数中尝试/捕获 – 推荐的做法?

我一直很好奇的东西 public class FileDataValidator { private String[] lineData; public FileDataValidator(String[] lineData){ this.lineData = lineData; removeLeadingAndTrailingQuotes(); try { validateName(); validateAge(); validateTown(); } catch(InvalidFormatException e) { e.printStackTrace(); } } //validation methods below all throwing InvalidFormatException 不建议在我的构造函数中包含try / catch块吗? 我知道我可以让Constructor将Exception抛回给调用者。 你们在调用像我在构造函数中所做的那样的方法时,你们更喜欢什么? 在调用类中,您更喜欢创建FileDataValidator的实例并在该实例上调用那里的方法吗? 只是有兴趣听一些反馈!

为什么不捕获Exception catch RuntimeException?

这对我来说很奇怪。 RuntimeExceptioninheritance自Exception ,它inheritance自Throwable 。 catch(Exception exc) { /* won’t catch RuntimeException */ 但 catch(Throwable exc) { /* will catch RuntimeException */ 我知道RuntimeException是特殊的,因为它是未经检查的。 但据我所知,这仅适用于是否必须宣布例外,而不是它们是否被捕获。 即便如此,我也不知道为什么这个逻辑会在捕获Throwable时破坏。 这与我非常相关,因为我有一种情况,可以在终端操作中抛出RuntimeExceptions。 我不确定这个模式的名称,但是类似于我的类EmailRoller采用了一系列Callbacks 。 代码如下所示: for(Callback cb : callbacks) { try { cb.call(item); } catch(Exception exc) { logger.error(“Error in callback: “, exc); } } 所以这是一个像OOME这样的东西需要通过的情况,因为如果其中一个回调消耗所有的机器内存,那肯定会影响其他的运行。 但是NullPointerException ? 还是IndexOutOfBoundsException ? 这些会影响回调,但不会阻止其他人运行。 此外,这是一个企业设计。 不同的程序员或团队可以添加回调来处理项目,但它们应该彼此隔离。 […]

什么样的行为导致中断的exception?

我对Java中的线程相对较新,我注意到每次使用Thread.sleep()时我都要捕获InterrupetdException。 什么样的行为会导致这种情况,在我有监控线程的简单应用程序中,我可以忽略exception吗?

从日志文件中提取java堆栈跟踪的工具

是否有任何工具可以提取出现在日志文件中的堆栈跟踪列表,并且可能会计算唯一的堆栈跟踪列表? 编辑 :我会做一些不基于GUI的东西,并在后台运行并提供某种报告。 我从很多环境收集了很多日志,只是想快速浏览一下。

请解释Java中的RuntimeException以及它应该在何处使用

我在SO上进行了这个伟大的讨论,标题为: 针对已检查exception的情况 ,但我无法遵循应该使用RuntimeException的位置以及它与正常exception及其子类的不同之处。 谷歌搜索给了我一个复杂的答案,也就是说,它应该用于处理编程逻辑错误,并且应该在没有正常情况发生时抛出,例如在switch-case结构的默认块中。 你能否在这里详细解释一下RuntimeException。 谢谢。

Java:catch的意义(最终的SomeException e)?

final在以下Java表达式中做了什么? catch (final SomeExceptionType e)

Java Thread:Run方法不能抛出已检查的exception

在Java线程中,’run’方法不能抛出’checked exception’。 我在Core Java(第1卷)一书中遇到过这个问题。 有人可以解释背后的推理吗?