异常处理
以前是和代码打交道,现在到处见到的是异常,学习的过程中收集一些异常:
1、el表达式出错
![el表达式出错](https://img-blog.csdn.net/20150713095321610)
问题所在(目前我所知道的):
1)、指定类下没有这个属性,包括变量,方法
2)、属性拼写错误
3)、方法命名大小写问题。
public double getSubtotal(){
BigDecimal d1 = new BigDecimal(book.getPrice()+"");
BigDecimal d2 = BigDecimal.valueOf(count);
return d1.multiply(d2).doubleValue();
}
<td>${cartItem.subtotal }元</td>
2、空指针
java.lang.NullPointerException
cart.servlet.CartServlet.add(CartServlet.java:42)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
cn.itcast.servlet.BaseServlet.service(BaseServlet.java:45)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
出错原因,某个值为null,根据指定的值,去重新改正。
3、程序出错
4、路径错误
最容易忽视的一个路径错误情况是servlet类名修改后,没有在WebServlet中修改配置。导致反复访问都出现路径错误。
修改完servlet类名后,一定要在@WebServlet(“/servlet”)中修改回来。负责,虽然修改了servlet类名,可是要访问servlet时,访问的还是原先配置的那个路径。
@WebServlet("/OrderServlet")
5.hibernate中出现的错误
1)java封装类与数据库中的字段不符(找不到数据库中的字段)
异常信息:
org.hibernate.exception.SQLGrammarException: could not extract ResultSet
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘user0_.uname’ in ‘field list’
解决方法如标题
2)没有映射hbm.xml文件
异常信息:
org.hibernate.MappingException: Unknown entity: entity.User
解决方法如标题
3)创建表失败
解决方法:查看映射文件中属性名与实体类中的属性名是否一致,如果都相同,查看主键生成方式与实体类中的类型是否一致。本例错误原因是,实体类中id类型为String,自动生成id值为number型,导致建表失败。
(待完善)