}catch(Exception e1){
    //在这里测试一下e1是不是ConstraintViolationException类型
    System.out.println(e1 instanceof ConstraintViolationException);
    System.out.println(e1.getClass());
    System.out.println("执行了");
}

解决方案 »

  1.   


    你好,但我的TOMCAT控制台上的确打出的是 ConstraintViolationException异常 ,但是就不是不知道为什么没有捕获到,反倒是直接在Exception中做了捕获。
      

  2.   


    明明控制台抛出的是 ConstraintViolationException ,但为什么catch(ConstraintViolationException e){
              System.out.println("没有执行");
    }catch(Exception e1){
                 System.out.println("执行了");
    } 是不是这个原因呢,我下一层向上抛的都是Exception异常,而导致的呢?
      

  3.   


    你好,但我的TOMCAT控制台上的确打出的是 ConstraintViolationException异常 ,但是就不是不知道为什么没有捕获到,反倒是直接在Exception中做了捕获。看你上面的回复 你下层向上抛的异常是exception?那你的异常实际上就是exception不是别的类型吧
      

  4.   

    catch不要用ConstraintViolationException  用Exception  然后打出异常,看看具体是什么
      

  5.   

    catch (ConstraintViolationException e) {
    System.out.println("1111111111111111111111111111111111111111111111111111111");
    }catch (Exception e) {
            Throwable cause = e.getCause();
            if(cause instanceof ConstraintViolationException) {
             System.out.println("222222222222222222222222222222222222222222222222222222");
            }else{
             System.out.println("33333333333333333333333333333333333333333333333333333");
            }
    }结果打出的是222222222222222,详细异常信息见下楼
      

  6.   

    详细异常ERROR: org.hibernate.util.JDBCExceptionReporter - ORA-00001: 违反唯一约束条件 (HYCS.SYS_C0020724)log4j:ERROR Failed to rename [/logs/pcd_face] to [/logs/pcd_face.2014-12-11.log].
    ERROR: org.hibernate.util.JDBCExceptionReporter - ORA-00001: 违反唯一约束条件 (HYCS.SYS_C0020724)ERROR: org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
    org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
      

  7.   

    你直接拿e instanceof ConstraintViolationException 试试
      

  8.   

    这种奇葩问题我也没遇到过。建议:还是用Exception捕获,但是异常里面判断下,如果是那个异常,那你继续做其他的业务操作,可提示、可返回