`

異常處理---01

阅读更多

公司原有的項目我負責的那部份oneToOne oneToMany以及ManyToMany等關係 今天進行聯合查詢時 爆出異常

異常一:failed to lazily initialize a collection of role

原因:

解決方法:

 

網上搜尋了資料  主要是延迟加载搞的鬼,对于一对多的时候最好是

異常二: org.hibernate.LazyInitializationException: could not initialize proxy - no Session

原因是:

 

异常三:a different object with the same identifier value was already associated with the sessionyuang原因: 在session中存在两个对象 关联的同一个标志位,其实这是同一个对象,但自己在做业务操作的时候可能保存了两次,

解决方法

      一是:最笨的方法 是手写HQL 

      二是:调用this.hibernateTemplate.merge();替代his.hibernateTemplate.update()  

 

 

 

 

異常四:Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value

原因: 一個不能為空的屬性引用了一個為空或為無效的值.

       解決方法: 打印將進行操作的對象的各項屬性和值 并檢查各個值是否為空或為無效的值,尤其是對有級聯操作的數據時更要仔細檢查

 

異常五:java.util.NoSuchElementException

原因:  一個迭代器被執行兩次,最好一個為空.

官方的解釋為:

An object of this class is thrown when a collection or iterator is empty. For example, when the next method of an Iterator instance is called when hasNext of that instance returns false as in the code below.

  ArrayList list = new ArrayList();
  list.add(new String("hello"));
  Iterator it = list.iterator();
  System.out.println(it.next());   // ok, list has one element
  System.out.println(it.next());   // NOT ok, iterator is "empty"
 

 修改為:

			for(Ability o: cacheList){
				Iterator<Ability> oldIt = OLDLIST.iterator();
				while(oldIt.hasNext()){
					Ability ability_1 = oldIt.next();
					if(ability_1.getAbilityCode().equals(o.getAbilityCode())){
						System.out.println("----移除OLDLIST共有對象---"+o.getAbilityName());
						oldIt.remove();//先將Iterator移除掉 然後進行數據各項操作
						OLDLIST.remove(ability_1);//移除對象
					}
				}
			}

  又報異常java.util.ConcurrentModificationException

原因為:因為Iterator 有一個独立的线程,并且拥有一个 mutex 锁。當 對Iterator進行迭代式 不能對其內的數據進行刪除和添加操作.否則會報該異常,解決方法是 先把迭代器移除 然後進行數據操作.

官方解解為:

public class ConcurrentModificationException extends RuntimeException

This exception may be thrown by methods that have detected concurrent modification of an object
 when such modification is not permissible.

For example, it is not generally permssible for one thread to modify a Collection while another thread is iterating over it. In general, the results of the iteration are undefined under these 
circumstances. Some Iterator implementations (including those of all the collection implementations 
provided by the JRE) may choose to throw this exception if this behavior is detected. Iterators that 
do this are known as fail-fast iterators, as they fail quickly and cleanly, rather that risking arbitrary, 
non-deterministic behavior at an undetermined time in the future.

Note that this exception does not always indicate that an object has been concurrently modified by 
a different thread. If a single thread issues a sequence of method invocations that violates the 
contract of an object, the object may throw this exception. 
For example, if a thread modifies a collection directly while it is iterating over the collection 
with a fail-fast iterator, the iterator will thow this exception.

Note that fail-fast behavior cannot be guaranteed as it is, generally speaking, 
impossible to make any hard guarantees in the presence of unsynchronized concurrent modification.
 Fail-fast operations throw ConcurrentModificationException on a best-effort basis. Therefore, it 
would be wrong to write a program that depended on this exception for its correctness: 
ConcurrentModificationException should be used only to detect bugs. 

  繼續修改代碼改為:

			for(Ability o: OLDLIST){
				System.out.println("---OLDLIST--"+o.getAbilityName());
				for(Iterator<Ability> newIt= NEWLIST.iterator(); newIt.hasNext();){
					Ability ability_1 = newIt.next();
					if(ability_1.getAbilityCode().equals(o.getAbilityCode())){
						System.out.println("----移除NEWLIST共有對象---"+o.getAbilityName());
						newIt.remove();
						NEWLIST.remove(ability_1);
						cacheList.add(o);
					}
				}
			}

 

  異常五: deleted object would be re-saved by cascade (remove deleted object from associations)

	/**
	 * 所處小組,需要包括管理組
	 * targetEntity 指明相關聯的類為Group.class
	 * FetchType.EAGER 指明預先獲取數據
	 * FetchType.LAZY  延時加載數據
	 * cascade=CascadeType.ALL 表示支持所有的級聯操作
	 * optional = false 表示可允許子集為空
	 * @return group
	 */
	@JsonIgnore
	@ManyToOne(targetEntity=Group.class,cascade=CascadeType.ALL,fetch = FetchType.EAGER)
	@JoinColumn(name="groupID",referencedColumnName="id")
	public Group getGroup() {
		return group;
	}

 異常原因是:

@ManyToOne(targetEntity=Group.class,cascade=CascadeType.ALL,




fetch = FetchType.EAGER)

將其改為:

cascade=CascadeType.REFRESH




就ok了

心得:對於注解掌握的的知識不強!

 

SQL 修改列名和表名

        一: EXEC sp_rename '表名.[列名]' , '新列名' ,'COLUMN'

        二: EXEC sp_rename '表名 ','新表名'.

 

異常六: javax.xml.transform.TransformerConfigurationException: 无法编译样式表

原因有兩種: 一是沒有解析包 可以導入xmlparserv21.jar 或者crimson-1.1.3.jar 等解析.xml和.xsl的jar包

                二是: 文件的路徑或者文件名不正確

 

異常七:javaEE1.5發送郵件時報出異常 Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/QEncoderStream

原因是:jar包之間有衝突,將mail包刪除 或者把換成java1.4EE 的開發環境 就可以在本地測試了.

 

異常八:Eclipse  No embedded stylesheet instruction for file

原因是: 當打開一個xml文件時,單擊Eclipse上的綠色運行按鈕時 拋出異常 并生成一個新的xml文件,解決方法把窗口顯示為你將要運行的java文件,重新運行 就好了! 這可能是Eclipse的一個bug!

 

異常九 spring BeanDefinitionStoreException Caused by: java.net.ConnectExceptio

貌似是網絡原因,其實是 xml文件DTD解析錯誤. 

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.5.dtd">
 

改為:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
 

異常十:javax .mail .MessagingExceptionCould not connect to SMTP hostsmtp .163.comport25

原因 一:本地計算機把端口號25 關閉了,比如一些防護軟件爲了阻止惡意軟件攻擊,會自動關閉端口25

原因二: 163郵箱服務器已關閉該端口

原因三:本地網絡不通.


異常十一:發佈項目是出現異常

 

java.lang.NoClassDefFoundError: 


javax


/el


/


ExpressionFactor









   解決方案: 將 jstl.jar;jsf-impl.jar;javaee.jar;jsf-api.jar 放在tomcat .xx\common\lib文件夾下

 

異常十二:                                   Caused

by: java.lang.IllegalStateException: Neither BindingResult nor plain

target object for bean name 'registrationForm' available as request

attribute


	at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:147)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:138)
	at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:122)
	at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:408)
	at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140)
	at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102)
	at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79)
	at org.apache.jsp.WEB_002dINF.views.registrationform_jsp._jspx_meth_form_005finput_005f0(registrationform_jsp.java:295)
	at org.apache.jsp.WEB_002dINF.views.registrationform_jsp._jspService(registrationform_jsp.java:122)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)

 

異常十三:

java.lang.AbstractMethodError:javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.AbstractMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;
	at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:498)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

  原因是Tomcat5.x不支持 jstl1.2 一些語法,它只實現了servlet2.4 和jsp2.0的相應規範,tomcat6.x實現了servlet2.5  和jsp2.1相應規範.

兩種解決方法將:

  一:將服務器tomcat5.x 升級為tomcat 6.x

  二:將jstl1.2jar包換成 jstl1.1jar

 

 

 

 

分享到:
评论

相关推荐

    nexus-3.55.0-01-unix.tar.gz

    在Unix环境下部署Nexus 3.55.0-01,首先需要下载对应的压缩包“nexus-3.55.0-01-unix.tar.gz”。解压后,你会得到两个主要文件夹:“nexus-3.55.0-01”和“sonatype-work”。 1. **解压并配置**:将“nexus-3.55.0-...

    详细解读php的异常处理机制-参考源码

    本文将深入解析PHP的异常处理机制,并参考提供的源码文件(exception01.php到exception07.php)来举例说明。 首先,我们需要了解PHP中的`try-catch`结构。这是处理异常的基本方式。当我们在`try`块中编写可能会抛出...

    DB2异常汇总-中文

    ### DB2异常汇总知识点 #### 一、概述 在日常操作DB2数据库的过程中,经常会遇到各种各样的问题,其中很多问题都与SQLCODE和SQLState有关。为了更好地理解和解决这些问题,下面将详细介绍一些常见的SQLCODE及其...

    DS28E01-100_drv_C.zip_DS28E01_ds28e01-100_hardhcm

    2. OWERROR.H:这是一个头文件,很可能定义了与单线通信相关的错误代码和异常处理机制,帮助开发者识别和处理在与传感器交互时可能出现的问题。 3. OWCOMD.H:这是另一个头文件,可能包含了DS28E01的特定命令和通信...

    美的TM-S1-01A电磁炉电路图

    4. **报警电路**:BZ1(蜂鸣器)与R20串联后连接到+5V电源,当检测到异常情况时会发出警报声。 #### 四、加热控制部分 这部分负责实际的加热过程,通过调整电流大小来控制加热速度。 1. **驱动电路**:U2 (VIPER...

    Jira_smart-prd-f01_smart-prd-f01_support_2024-01-04-12-03-45.zip

    标题中的“Jira_smart-prd-f01_smart-prd-f01_support_2024-01-04-12-03-45.zip”表明这是一份与Jira相关的压缩文件,用于存储产品名为“smart-prd-f01”的生产环境支持数据。时间戳“2024-01-04-12-03-45”揭示了...

    Lab01-异常处理-调试

    Lab01a异常处理和调试 关于本计划 代码研究员401 ASP.NET实验1的实践与异常处理和调试,根据用户的输入执行简单的数学方程式。 设置 克隆回购 在Visual Studio或其他选择的IDE中打开并运行文件 视觉的 该程序是一个...

    JavaSE进阶-04-异常处理.pdf

    JavaSE 进阶课程中的异常处理是编程实践中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地处理并提供反馈,而不是突然崩溃。以下是关于异常处理的详细说明: 1. **异常的基本概念** 异常是在程序运行过程...

    python版本的jd_seckill 来自huanghyw 及go版本的mtseckill-v2021-01-07

    4. **异常处理**:考虑到网络波动、服务器繁忙等因素,项目内嵌了异常处理机制,以保证程序的健壮性。 5. **多线程/协程**:为了提高抢购效率,`jd_seckill`可能采用了多线程或异步IO(如asyncio)来并发处理多个...

    TM-S1-01A原理图

    文档中提到的“低成本主控板”TM-S1-01,是整个电磁炉控制逻辑的核心,负责接收用户指令、处理信号、控制功率输出等。主控板上的主要元器件包括: - **电容**(如C5、C4、C14等):用于滤波、储能或隔直通交,确保...

    计算机后端-Java-Java核心基础-第17章 异常处理 01. 每天一考.avi

    计算机后端-Java-Java核心基础-第17章 异常处理 01. 每天一考.avi

    sei-cert-cpp-coding-standard-2016-v01_c_安全编程_sei-cert-c-coding_S

    3. **错误处理**:鼓励使用异常处理来捕获程序运行时的错误,而不是依赖返回值进行错误检测。同时,提倡编写清晰的错误消息,便于调试和排查问题。 4. **输入/输出验证**:强调对输入数据进行严格的验证和过滤,以...

    learn-the-architecture-aarch64-exception-model-102412-0103-01

    - **0103-01**:2022年12月19日,重新结构化并增加了异常类型和异常处理的内容,非机密。 #### 异常模型简介 在AArch64架构中,异常是指由硬件产生的任何中断或错误事件。这些事件可能会导致处理器从正常的执行...

    DI-PDXX-SPC-01-V01_XX规格书模板.docx

    - **可靠性**:包括异常状况处理、数据维护期间断电、故障检测时间等方面的细节。 ##### 6. 验证 - **环境**:验证产品在各种极端环境条件下的表现。 - **功能**:通过实际测试验证产品的各项功能是否符合设计要求...

    FENA_01_11_21_CN_revA.pdf

    - 讨论了异常处理机制,包括例外代码的定义及处理方式。 9. **诊断**: - 提供了故障排查的方法,包括故障和警告消息的含义、LED指示灯的状态说明以及内部错误代码寄存器的使用。 10. **EtherNet/IP协议**: - ...

    IMP-00009:异常结束导出文件解决方案.docx

    ### IMP-00009:异常结束导出文件解决方案 #### 一、问题背景与概述 在Oracle数据库管理过程中,经常会遇到数据迁移的需求,其中一个常见的操作就是使用`exp`命令将表数据导出为一个文件,再使用`imp`命令将这个...

    S9300&S9300E;_故障处理-入门篇(pdf).zip

    4. **接口故障**:01-08 接口故障.pdf涵盖了网络接口可能出现的问题,如接口状态异常、丢包、速率不匹配等,提供了检查接口状态、配置和物理连接的步骤。 5. **硬件故障**:01-06 硬件故障.pdf则专注于硬件层面的...

    老男孩python 网盘下载

    课时28 04-11-异常及异常处理 课时29 04-辅助-代码调试 课时3 04-01-辅助-wj01-pythoner.cn-os 课时30 05-04-测试驱动开发 课时31 05-03-继承及模块化开发 课时32 05-02-重载 课时33 05-01-面向对象 课时34 06-01-子...

    GEE教程异常篇-v3.pdf

    var a=ee.Date("2018-01-01“); print(a); // 使用了错误的中英文引号 ``` **正确做法**: ```javascript var a=ee.Date("2018-01-01"); print(a); ``` #### 未定义变量 **示例**: ```javascript var a=0; print(b...

Global site tag (gtag.js) - Google Analytics