【是什么】
异常是超出程序正常正确执行流程的一些特殊情况。异常可以说是程序中的一些错误,但并不是所有的错误都是异常。例如用户登录,正常正确的流程是用户输入正确的用户名和密码进入系统,但是输入的密码不正确,不能登录系统,这就是一种异常,而不是错误。
【为什么】
①捕获异常,处理异常,给用户一个良好的错误提示,增加用户体验度。
②处理异常,就是尽可能多的为各种可能出现的情况做相应的处理,增强程序健壮性,简单说就是不会使系统崩溃。
②及时处理异常,减少出现硬件和软件不必要的问题的可能性。
③提高系统安全性。
④通过获取Java异常信息,也为程序的开发维护提供了方便,一般通过异常信息就很快就能找到出现异常的问题(代码)所在。
【分类】
①编程式异常(手动处理的异常)
②声明式异常(自动处理的异常)
声明式:(在web.xml中通过配置来确定不同的异常类型怎么处理)例如:
<error-page>
<!--异常类型-->
<exception-type>com.bjpowernode.drp.sysmgr.manager.PasswordNotCorrentException</exception-type>
<!--转向的页面-->
<location>user_validate.jsp</location>
</error-page>
编程式:(在catch到异常时,自己写相应的处理)
try {
//程序代码
}catch (Exception e) {
//失败,直接为result赋值
result= "error";
// 将源数据返回
errorStudentListGlobal= excelStudentList;
System.out.println("导入失败,事务回滚,将源数据返回");
}
【关键字】
Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。
一般结构如下:
Try{
程序代码
}catch(异常类型 异常的变量名){
程序代码
}finally{
程序代码
}
try语句块中是有可能出现异常或者我们要监听的语句代码,try语句块中出现异常,就会被catch语句捕获并做相应处理。也可以通过throws关键字在方法上声明该异常的抛出。finally语句块,finally可以没有,有也只有一个。假如有finally,那么无论有没有发生异常,finally都会在方法return前执行。
注意:
①可以有多个catch,用来匹配多个异常。
②try catch finally均不能单独使用.
③catch的类型是java语言中定义的,也可以是程序员自己定义的,(例如上文中的PasswordNotCorrentException)表示代码抛出异常的类型,异常的变量名表示抛出异常的对象的引用。
④try 、catch、finally三个代码块中变量的作用域分别独立而不能相互访问.如果要在三个块中都可以访问,则需要将变量定义到这些块的外面.
【异常类型】
猪妖分为四大类:
①Error:编译和系统的错误
②Runtime Exception:运行时异常,只有代码运行起来才会抛出的异常
③Exception:包含运行异常Runtime Exception和非运行异常Non_Runtime Exception
④throw:用户自定义异常
常见异常分类:
1.NullPointerException:
空指针异常,简单来说就是某个要用的对象为空,导致取得的数据为空。
2.ClassNotFoundException
指定的类不存在,简单说就是根据工作空间或者路径或者类名称,找不到该类。
3.ArrayIndexOutOfBoundsException
数组下标越界,调用的下标超出了数组的范围。
4.IllegalArgumentException
方法的参数错误,一般是调用的方法中参数传递有些问题。
5.FileNotFoundException
文件位找到,根据路径找不到文件。
6.IOException
输入输出异常
近些天遇到的异常就这些,下面链接是从网上搜索了一些其他的异常分类,与君共勉。