`
wangxiangjunpxp
  • 浏览: 37793 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

小心finally块里面的异常

阅读更多

try {
   emf = Persistence.createEntityManagerFactory(Constants.getProperty("persistenceUnit","synch"));
   
   em = emf.createEntityManager();
   emForReverse =  emf.createEntityManager();
   emForHis = emf.createEntityManager();
   if (em == null || emForReverse == null || emForHis == null){
    //logger.info("不能获得实体管理器,无法初始化数据库模块!");
    throw new Exception("获得实体管理器为空!");
   }
   
  } catch (Exception e) {
   // TODO Auto-generated catch block
   //e.printStackTrace();
   throw new Exception("获取数据库功能模块失败!" + e);
  }finally{
         emf.close();  /////问题在于这里可能抛出异常,导致上面我故意抛出的异常不被看到。
  }

 

这是在一个servlet的init函数里面调用的代码,如果在finally模块里面不抓异常,则因为finally代码块是在函数返回之前执行,finally里面可能发生的空指针异常会先抛出,而我需要看到的业务逻辑方面的异常却被屏蔽。造成极大困惑!

 

分享到:
评论

相关推荐

    try-catch-finally捕获异常

    finally块总是会被执行,無論try块中是否出现异常。finally块的语法结构如下: ```java finally { // 资源释放或清理操作 } ``` 四、异常处理机制 try-catch-finally语句的异常处理机制可以分为以下几个步骤: ...

    使用try-catch-finally处理异常

    4. **finally块** `finally`块是可选的,无论`try`和`catch`块中的代码是否抛出异常,`finally`块里的代码都会被执行。这通常用于资源清理,如关闭文件流、网络连接等。即使在`try`或`catch`块中有return语句,`...

    try_catch_finally异常处理java

    本文将深入探讨Java中的`try-catch-finally`语句块,以及它们在异常处理中的作用。 首先,`try`块是异常处理的起点。在这个代码段中,我们通常会放置可能会抛出异常的代码。当Java执行到可能抛出异常的代码行时,...

    dotnet C# 在 finally 抛异常会发生什么.rar

    `try`块包含可能会引发异常的代码,`catch`块用于捕获和处理这些异常,而`finally`块则确保无论是否发生异常,都会执行特定的清理代码,如关闭文件流或释放资源。`finally`块的设计目的是保证代码的整洁性和资源的...

    C#异常处理避坑指南:try-catch-finally的5个黄金法则.pdf

    C#异常处理避坑指南:try-catch-...精确捕获异常类型、合理使用finally块、不在catch块中抛出新异常、在catch块中记录详细日志以及避免在finally块中执行抛出异常的操作,这些都是实现高质量异常处理的关键要点。

    finally结构的注意点(一)

    在编程语言中,`finally` 结构是一种保证代码执行的关键构造,无论程序的其他部分是否抛出异常或者正常结束,`finally` 块中的代码总是会被执行。这对于清理资源,比如关闭文件流或者数据库连接,是至关重要的。在...

    java try…catch…finally捕获异常的实例

    `finally`块包含在`try-catch`结构中,无论是否发生异常,`finally`块中的代码都会被执行。这通常用于清理资源,如关闭文件流、网络连接等。 ```java finally { // 清理代码,确保无论是否发生异常都会执行 } ``` ...

    java 中finally语句块与return的执行关系

    因此,在编写 Java 代码时,需要非常小心地处理 finally 语句块与 return 的执行关系,以免出现意外的结果。 在 Java 中,还有一些其他的存储区域,例如寄存器、堆栈、静态存储区等。这些存储区域都有其特点和作用...

    C#异常处理终极指南:try-catch-finally的深度实践.pdf

    无论try块中是否发生异常,finally块中的代码总会被执行。通常finally块用于执行资源释放的操作,如关闭文件句柄或断开数据库连接等。 深入理解try块非常重要。try块可以包含多个可能抛出异常的操作,一旦其中某个...

    在静态编译器中实现Java异常机制的算法.pdf

    Java 异常处理逻辑可以分为六种情况:try 块不抛出异常且不包含 finally 块、try 块不抛出异常且包含 finally 块、try 块抛出异常且 catch 块不处理异常且不包含 finally 块、try 块抛出异常且 catch 块不处理异常且...

    异常+异常处理+try-catch-finally+教程

    异常+异常处理+try-catch-finally+教程 - 本资源是一个异常处理的教程,教你如何用Java的try-catch-finally语句处理异常,包括抛出和捕获异常,自定义异常,多个异常,finally块等。

    C#异常处理总结及简单实例

    C#异常处理总结及简单实例 一、异常处理的理解? 异常处理是指程序在运行过程中,发生...3、finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。 例如如果你打开一个文件,不管是否出现异常文件都

    C#异常处理全攻略:try、catch、finally的正确打开方式.pdf

    finally语句块在try-catch结构中是可选的,但当需要执行一些无论是否发生异常都必须执行的代码时,finally语句块非常有用。无论是否捕获到异常,finally语句块中的代码都会被执行。例如,通常在finally语句块中释放...

    Java异常处理之try...catch...finally详解

    Try块中可以包含多个语句,catch块中可以包含多个异常类型,finally块中可以包含资源的释放代码。通过try…catch…finally语句块,我们可以轻松地处理各种异常,确保程序的健壮性和可靠性。 Java异常处理机制的优点...

    c/vc++/MFC异常处理/结构化异常处理 浅析

    SEH使用__try、__except和__finally关键字,能够捕获和处理系统级异常,如硬件故障、访问违规等。相比于C++异常,SEH更加底层,性能更好,但在代码的可读性和可移植性上略逊一筹。在MFC中,可以通过CATCH_ALL、END_...

    方法抛出的异常处理 (2)修改UserDaoImp1类,要求用户id不能修改,修改则抛出异常 使用log4j输出日志信息

    1.需要完成的任务 使用UserDaoImp1类和User...(2)为了判断在finally块输出是否抛出异常,可以设置一个变量,在catch块里修改这个变量 实践四:使用log4j 需求说明 (1)使用log4j输出日志信息 (2)查看输出日志信息

    java.try-catch-finally(解决方案).md

    try-catch-finally结构是Java中处理异常的基础,其基本用法包括:try块用于包裹可能出现异常的代码,catch块用于捕获并处理特定类型的异常,而finally块则用于执行无论是否发生异常都需要执行的代码,例如资源清理和...

    java.try-except-finally.md

    如果在finally块中也有代码可能导致异常抛出,可以在finally块内部再次使用try-catch结构来处理这些异常。 从上述示例可以看出,try-catch-finally的组合使用提供了一种优雅的方式来处理程序运行中可能出现的异常...

    Python自学教程-18-异常的finally.ev4.rar

    本教程将深入探讨Python中的异常处理机制,特别是`try/except/finally`块的应用。异常是程序运行过程中出现的错误,可能由语法错误、逻辑错误或外部条件(如文件未找到)引起。Python提供了一种优雅的方式来捕获并...

    try except finally的用法.doc

    尽管在finally块中不推荐使用return、break或continue语句,因为它们可能会覆盖之前保存的异常状态,但finally块中的异常信息是无效的。 try-except-finally结构可以增加程序的健壮性,被视为防御性编程的一种实践...

Global site tag (gtag.js) - Google Analytics