`

项目所容易犯的错误与发生的异常[转]

阅读更多

list=1]

  • exception setting property value with CGLIB 有可能是因为。你的字段中有个字段是数值类型的如int,long等  
       这个字段在数据库里面的直为空。所以就要报这个错误。你把你涉及倒的表中所有为数值的字段为空的设置为0看看。
  • tomcat热部署3次以上真的会OOM。。。。
  • oracle中取别名 ,别名应使用双引号。。。。。
  • 数据库主键的建议:在使用hibernate的时候不要使用oracle中触发器来生成主键,否则持久化对象无法感知ID的变化而进行同步。对于log等日志表,主键使用UUID的生成策略,用varchar2做主键类型比较好。
  • 中文乱码大多是用get 方法提交的表单,所以可能有中文的表单一定要中post提交,post方法提交的话,浏览器会自动给中文编码再提交。
  • struts1.2中标签体内空格也是占位的。标签会把加了空格的字符串当做作用域中的key去取,这样会取不出来的。
  • java.sql.SQLException: 数据大小超出此类型的最大值: 2391。这是用varchar2(2000)来储存中文字符时(varchar2最大值是2000),如果超过2000/3=666(oracle在utf-8编码下一个中文3个字节),就会报这个错误,所以插入值的时候不要超过600. 网上说是oracle驱动的问题,但换了驱动还是不行。
  • IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.apache.commons.fileupload.DeferredFileOutputStream java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.apache.commons.fileupload.DeferredFileOutputStream
    这个错误是使用struts的FileImg上传后,重启或关闭tomcat的时候发生的错误,找了apache的官网才有答案,原因是当tomcat重启或关闭是要把所有可以序列化的对象保存至session的作用域(??),但是defferredFileOutputStream没有实现Serializable接口,所以报错,看来可以直接无视。
    原文:

    Because when you shutdown tomcat, it tries to serial all objects within
    the session scope. The
    class you are referring to
    'org.apache.commons.fileupload.DeferredFileOutputStream' does not
    implement 'java.io.Serializable' and therefore tomcat throws this
    exception when trying to serialize it.

    Whilst I don't know what the class
    'org.apache.catalina.session.StandardManager' does, presumably is
    performs a check to see if an object stored within the session is
    serializable before trying to
    write it disk, or it might remove non-serializable object from the
    session scope on shutdown.
  • java.sql.SQLException: ORA-00932: 不一致的数据类型: 要求 NUMBER 得到的却是 BINARY出现这个异常是因为在数据库中字段为number类型的值给赋予了null,粗心出的错误。不过建议把基本数据类型变成包装类型,这样当你没有赋值的时候会向数据库插入NULL,而不是基本类型的默认值,防止出BUG。
  • org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[jsp] - Servlet.service() for servlet jsp threw exception java.net.SocketException: Connection reset by peer: socket write error
    原因:
    一般是有些客户端已关闭,一些线程因为延迟等原因觉察不到此连接已结束,继续等到到出错
    或是
    客户端那里不停刷或一个访问/刷新没完成前再刷,要让这个无用的线程死掉
    不影响业务 操作数据库的数据都是正确的 有时候这个错误也会出现在程序运行中间 而且也不影响后面的操作
  • ERROR [org.apache.catalina.session.ManagerBase] - IOException while loading persisted sessions: java.io.InvalidClassException: com.userModule.web.form.CommonForm; local class incompatible: stream classdesc serialVersionUID = 2692096418018593414, local class serialVersionUID = 9165043261724574951 [color=red]
    java.io.InvalidClassException: com.userModule.web.form.CommonForm; local class incompatible: stream classdesc serialVersionUID = 2692096418018593414, local class serialVersionUID = 9165043261724574951

    在tomcat下启动时抛出这样一个异常,这是由于我所有的类都没有进行显示的设置
    Java代码 复制代码
    1. private static final long serialVersionUID=????;   
    private static final long serialVersionUID=????;

    这只是一个小问题,原因是:
    java通过一个名为UID(stream unique identifier)来版本控制,这个UID是隐式的,它通过类名,方法名等诸多因素经过计算而得,理论上是一一映射的关系,也就是唯一的。如果UID不一样的话,就无法实现反序列化了,并且将会得到InvalidClassException。

    本来是要得到一个字符串的,小细节
  • char型+数字变成了数字。。。。。
  • 在使用filter加载公共属性的时候,尽量在公共域中放置数字标识[/color] 因为在加载公共属性的时候是要耗时间的,如果采用判断公共属性在公共域中是否有,在高并发量时会把这个公共属性加载几次
  • varchar2转clob不能直接转,要把varchar2转成long,然后把long转成clob. 在oracle9i2中使用最新的ojdbc14.jar可以使用hibernate直接把clobd当String操作,但前提是不能超过string的最大长度。貌似string长度是3w多。
  • 索引'HNWT114.PK_T_114WEB_C_DYNAMIC'或这类索引的分区处于不可用状态索引失效,只能重建表来解决
  • hql语句的from不支持子查询,where支持!
  • hql语句不支持2层函数嵌套!
  • ORA-01747: 无效的用户.表.列,表.列,或列规格,程序中报这个错误是因为oracle数据库的表中用了oracle的关键字,所以在oracle设计表中不要用关键字 [/list]
  •  

    分享到:
    评论

    相关推荐

      Java习题(一些不注意就犯的错误)

      本篇将详细探讨"Java习题(一些不注意就犯的错误)"中涉及的知识点,包括字符谜题、循环谜题、异常谜题、类谜题以及库谜题,旨在帮助你更好地理解和避免这些常见问题。 1. 字符谜题: Java中的字符处理有时会让人...

      Twenty-Five Most Common Mistakes with Real-Time Software Development

      无论是初学者还是资深专家,在进行实时软件开发的过程中往往容易重复犯同样的错误。这些错误不仅会影响项目的进度和质量,还可能导致软件出现难以预料的问题。本文将探讨在实时软件开发过程中最常遇到的25个错误,并...

      令人敬畏的错误:令人敬畏的错误

      运行时错误则发生在程序执行过程中,例如访问未定义的变量、调用不存在的方法等。逻辑错误则最为棘手,它们不会导致程序崩溃,但可能导致程序行为不符合预期,比如算法错误或者理解错误的条件判断。 "真棒虫-...

      代码查错器简单版

      "代码查错器简单版"特别适合初学者,他们可能对编程语法规则不熟悉,容易犯错误。同时,对于专业开发者来说,这个工具也可以作为一个快速验证代码正确性的辅助工具,尤其在进行快速迭代和调试时。 5. **提升与进阶...

      阿里巴巴java开发手册

      正例给出了推荐的编码和实现方式,而反例则警示了容易犯的错误和真实案例。 总之,《阿里巴巴Java开发手册》不仅仅是对Java开发的规范化指导,更是对软件开发质量的保证。它强调通过规范的约束来提升软件开发的整体...

      软件测试部分中英文对照.txt

      Exception(异常):在程序执行过程中发生的一种错误情况,它会中断程序的正常流程。 Exception handlers(异常处理器):代码中的部分,用来处理程序中出现的异常情况。 Exhaustive testing(穷尽测试):理论上...

      Exceptional.C++

      - **概念介绍**:陷阱和误区指的是在C++编程过程中容易犯的错误,而反模式则是指那些虽然看似合理但实际上却会导致问题的设计或实现方式。 - **实践意义**:了解这些陷阱和误区可以帮助开发者规避常见错误,提高编程...

      走出自动化软件测试的乌托邦

      - 人类在长时间重复同一任务时容易出现疲劳和疏忽,自动化测试可以减少这类人为错误的发生概率。 - **自动化最根本的目标** - 自动化测试的根本目标是为了提高软件产品质量,确保产品能够满足用户需求并达到预期的...

      C-C++ 常见误区

      2. **编译器的选择**:初学者常犯的一个错误是在选择编译器时过于随意。使用Turbo C、Turbo C++、Borland C/C++等老旧编译器进行学习可能会导致对现代C/C++标准的误解。例如,这些编译器可能不支持C99、C++11及更高...

      The Top 10 Mistakes on SQL Server.pdf

      ### SQL Server数据库使用中最容易犯的10个错误 #### 一、未知的可扩展性需求(Unknown Scalability Requirements) **知识点概述:** 在数据库设计之初未能充分考虑系统的可扩展性,导致随着数据量的增长,系统...

      操作系统(内存管理)

      munmap() 所做的事情与 mmap() 相反。 如您所见, brk() 或者 mmap() 都可以用来向我们的进程添加额外的虚拟内存。在我们的例子中将使用 brk(),因为它更简单,更通用。 实现一个简单的分配程序 如果您曾经...

      内存管理内存管理内存管理

      munmap() 所做的事情与 mmap() 相反。 如您所见,brk() 或者 mmap() 都可以用来向我们的进程添加额外的虚拟内存。在我们的例子中将使用 brk(),因为它更简单,更通用。 实现一个简单的分配程序 如果您曾经编写过...

      英语四级单词表

      - 示例:*He admitted making a mistake.*(他承认犯了一个错误)。 72. **adopt** (verb): 采用,采纳。 - 示例:*The company adopted a new strategy.*(公司采用了新的策略)。 73. **adult** (noun/...

    Global site tag (gtag.js) - Google Analytics