以下代码报 comweihanchenservletEmsActionServletserviceEmsActionServletjava28 异常 分析并给出正确的代码package comweihanchenservlet;import comweihanchendaoEmsDao;import comweihanchendaoimplEmsDaoImpl;import comweihanc
根据给出的代码和异常信息 "com.weihanchen.servlet.EmsActionServlet.service(EmsActionServlet.java:28)",可以推断出异常是在EmsActionServlet的service方法中发生的,具体是在第28行发生的异常。
根据代码,第28行是调用了saveEmployee方法的地方,因此异常可能是在saveEmployee方法中发生的。根据saveEmployee方法的代码,可能的异常点有以下几个:
- 调用request.getParameter()方法获取请求参数时,可能会出现空指针异常(NullPointerException),如果请求中没有对应的参数。
- 调用Integer.parseInt()方法将字符串转换为整数时,可能会出现数字格式异常(NumberFormatException),如果字符串不能被正确转换为整数。
- 调用Date.valueOf()方法将字符串转换为日期时,可能会出现日期格式异常(IllegalArgumentException),如果字符串不能被正确转换为日期。
- 调用Double.parseDouble()方法将字符串转换为浮点数时,可能会出现数字格式异常(NumberFormatException),如果字符串不能被正确转换为浮点数。
为了修复这些潜在的异常,可以进行以下改进:
- 在调用request.getParameter()方法获取请求参数之前,先判断参数是否存在。可以使用request.getParameterMap()方法获取所有的请求参数,然后根据参数名进行判断。
- 在调用Integer.parseInt()方法将字符串转换为整数之前,先进行合法性检查。可以使用正则表达式或其他方式判断字符串是否为合法的整数。
- 在调用Date.valueOf()方法将字符串转换为日期之前,先进行合法性检查。可以使用正则表达式或其他方式判断字符串是否为合法的日期格式。
- 在调用Double.parseDouble()方法将字符串转换为浮点数之前,先进行合法性检查。可以使用正则表达式或其他方式判断字符串是否为合法的浮点数格式。
修复后的代码如下:
private void saveEmployee(HttpServletRequest request, HttpServletResponse response) {
//获取用户请求数据
String empno = request.getParameter("empno");
String ename = request.getParameter("ename");
String job = request.getParameter("job");
String mgr = request.getParameter("mgr");
String hiredate = request.getParameter("hiredate");
String sal = request.getParameter("sal");
String comm = request.getParameter("comm");
String deptno = request.getParameter("deptno");
if (empno == null || ename == null || job == null || mgr == null || hiredate == null || sal == null || comm == null || deptno == null) {
// 处理参数缺失的情况
response.getWriter().println("<h1>参数缺失<h1>");
return;
}
try {
int empnoInt = Integer.parseInt(empno);
int mgrInt = Integer.parseInt(mgr);
double salDouble = Double.parseDouble(sal);
double commDouble = Double.parseDouble(comm);
int deptnoInt = Integer.parseInt(deptno);
Employee employee = new Employee(
empnoInt,
ename,
job,
mgrInt,
Date.valueOf(hiredate),
salDouble,
commDouble,
deptnoInt
);
System.out.println(employee);
boolean flag = dao.addEmp(employee);
if (flag) {
response.getWriter().println("<h1>添加员工成功<h1>" +
"<a href=\"select.do\">查看员工</a>");
} else {
response.getWriter().println("<h1>添加员工失败<h1>");
}
} catch (NumberFormatException e) {
response.getWriter().println("<h1>数字格式异常<h1>");
} catch (IllegalArgumentException e) {
response.getWriter().println("<h1>日期格式异常<h1>");
} catch (Exception e) {
e.printStackTrace();
}
}
``
原文地址: https://www.cveoy.top/t/topic/iNuR 著作权归作者所有。请勿转载和采集!