开发过程中--常见错误解决

1 字符串越界错误 java.lang.StringIndexOutOfBoundsException

注意: 对字符串进行截取(substring,charAt)、转换为字节数组(getBytes),字符数组转换为字符串
(valueOf)操作时,先对操作字符串对象的存在性(是否为空)及长度进行检查后,再进行
操作。

2. 数据插入异常 ,GenericJDBCException: could not insert

a. 没有建表

b.插入数据执行时没有commit 提交语句;

3 类定义未找到错误 java.lang.NoClassDefFoundError

a.一般重新编译或找对应包或类

4 解决 java.lang.StackOverflowError 错误。

错误原因:,JVM 会开辟一块内存空间去储存程序进行时的某些信息,当程序运行时需
要储存的信息超过了分配的空间,就会出现那样的问题.比如死循环,递归次数过多

a.从程序代码优化入手,检查是否有死循环,递归等

5 在开发框架整合时:java.lang.NoSuchMethodError

a.一般主要是从jar包冲突入手,根据提示的具体错误信息定位jar包

6.Java 错误 java.lang.Error

a.对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致
系统无法正常运行;
b. 对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;
c. 系统访问的外部资源出现异常情况

7. Java 调用 DLL 错误:Exceptioninthread"main"java.lang.UnsatisfiedLinkError 解决

Exceptioninthread"main"java.lang.UnsatisfiedLinkError,编译没有问题,运行出现问题,
如果错误 Exceptioninthread"main"java.lang.UnsatisfiedLinkError 后面是某一个类名的话,很可
能是 java 程序调用了有关 dll 文件而没有找到这样的 dll 文件造成的。

一般把需要的 dll 文件放到和该 java 类相同的目录下即可。

8.java.lang.OutOfMemoryError 异常处理总结

a 内存中加载的数据量过于庞大,如一次从数据库取出过多数据。
b集合类中有对对象的引用,使用完后未清空,使得 JVM 不能回收。
c代码中存在死循环或循环产生过多重复的对象实体。
d 使用的第三方软件中的 BUG。
e启动参数内存值设定的过小

9.如果 JSP 页面跳转时出现下边的错误信息

The request sent by the client was syntactically incorrect (Invalid path
/web/shoppingCart was requested)

检查 struts-config 的action的配置

10 部署 Struts 时,出现如下错误信息

HTTP Status 404 - Servlet action is not available
type Status report
message Servlet action is not available
description The requested resource (Servlet action is not available) is not
available.

a.web.xml 文件中未配置 ActionServlet。
b. struts-config.xml 文件未配置你要访问的 Action。
c. 你的 jsp 文件 form 标记中 action 属性的路径名称错误。
d 具体情况具体看

11.JSON.parseObject(jsonObj,Map.class)类型转换异常

    2019-05-31 16:12:26.692 [http-nio-1601-exec-2] ERROR at com.wb.test.controller.UserController

    java.lang.Integer cannot be cast to java.lang.Long
    java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
String jsonStr = “{\”123001\”:1201,\”109131\”:1301}”;
Map<String,Long> map = JSONObject.parseObject(jsonStr, Map.class);
Long uid = map.get(“123001”);
System.out.println(uid);

代码报错 原因很明显,类型转换异常:分析原因:

将json字符串转为了Map类型而未指定目标Map中的泛型,此时Map中的类型可以写任何类型,编译的时候都不会被编译器识别出来。导致转换之后的Map类中并没有确定的泛型规定,所以在运行过程中使用map.get()方法获取到的value如果在int范围内,会自动当做Integer类型处理,如果用Long类型去接收,相当于将Integer转为Long,而由低精度向高精度强转就会抛出类型转换异常

a.在使用JSONObject.parseObject()转换的时候,指定目标Map中的泛型,例如

Map<String,Long> map = JSONObject.parseObject(jsonStr, new TypeReference<Map<String,Long>>(){});

b.先将获取到的数字类型的value转换为Number类型,然后转为Long类型,因为Number为Integer和Long的父类,可以直接转换

    String jsonStr = “{\”123001\”:1201,\”109131\”:1301}”;
    Map<String,Long> map = JSONObject.parseObject(jsonStr, Map.class);

    Long value = ((Number)map.get(“123001”)).longValue();

    System.out.println(value);

 

 

 

不定时更新。。。

人世间,流浪人归,亦若回流川。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值