意料中的意外--异常处理

异常处理机制详解

【是什么】

   异常是超出程序正常正确执行流程的一些特殊情况。异常可以说是程序中的一些错误,但并不是所有的错误都是异常。例如用户登录,正常正确的流程是用户输入正确的用户名和密码进入系统,但是输入的密码不正确,不能登录系统,这就是一种异常,而不是错误。

【为什么】

 ①捕获异常,处理异常,给用户一个良好的错误提示,增加用户体验度。

 ②处理异常,就是尽可能多的为各种可能出现的情况做相应的处理,增强程序健壮性,简单说就是不会使系统崩溃。

 ②及时处理异常,减少出现硬件和软件不必要的问题的可能性。

 ③提高系统安全性。

 ④通过获取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个关键字trycatchthrowthrowsfinally进行管理。

一般结构如下:

Try{
程序代码
}catch(异常类型 异常的变量名){
程序代码
}finally{
程序代码
}

         try语句块中是有可能出现异常或者我们要监听的语句代码,try语句块中出现异常,就会被catch语句捕获并做相应处理。也可以通过throws关键字在方法上声明该异常的抛出。finally语句块,finally可以没有,有也只有一个。假如有finally,那么无论有没有发生异常,finally都会在方法return前执行。

注意:

  ①可以有多个catch,用来匹配多个异常。

  ②try catch finally均不能单独使用.

  ③catch的类型是java语言中定义的,也可以是程序员自己定义的,(例如上文中的PasswordNotCorrentException)表示代码抛出异常的类型,异常的变量名表示抛出异常的对象的引用。

  ④try catchfinally三个代码块中变量的作用域分别独立而不能相互访问.如果要在三个块中都可以访问,则需要将变量定义到这些块的外面.

【异常类型】

猪妖分为四大类:

 ①Error:编译和系统的错误

 ②Runtime Exception:运行时异常,只有代码运行起来才会抛出的异常

 ③Exception:包含运行异常Runtime Exception和非运行异常Non_Runtime Exception

 ④throw:用户自定义异常

常见异常分类:

 1.NullPointerException:

  空指针异常,简单来说就是某个要用的对象为空,导致取得的数据为空。

 2.ClassNotFoundException

  指定的类不存在,简单说就是根据工作空间或者路径或者类名称,找不到该类。

 3.ArrayIndexOutOfBoundsException

  数组下标越界,调用的下标超出了数组的范围。

 4.IllegalArgumentException

  方法的参数错误,一般是调用的方法中参数传递有些问题。

 5.FileNotFoundException

  文件位找到,根据路径找不到文件。

 6.IOException

  输入输出异常

 近些天遇到的异常就这些,下面链接是从网上搜索了一些其他的异常分类,与君共勉。

http://www.cnblogs.com/cvst/p/5822373.html

评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值