1、异常分为两类:

--1)Error:Java虚拟机无法解决的严重问题(例如资源耗尽等);

--2)Exception:其他编程错误或偶然的外在因素导致的一般性问题(例如空指针异常、读取的文件不存在、网络中断等)。

2、捕获错误最理想的是在编译期间,然后有些错误只有在运行时才会发生(编译时异常(checked)、运行时异常(unchecked))。

3、常见的运行时异常:

--1)数组下标越界:ArrayIndexOutOfBoundsException;
--2)算术异常:ArithmeticException;
--3)类型转换异常:ClassCastException;

--4)空指针异常:NullPointerException;

4、Java提供的是异常处理的抓抛模型。

--程序执行过程中如出现异常,会生成一个异常类对象,该异常对象将被提交给Java运行系统,这个过程称为抛出异常;

--异常对象可由JVM自动生成,也可由开发人员手动创建。

5、try{}

  catch(Exception1 e1){}//catch可以多写,try中抛出的异常类对象从上往下匹配catch中的异常类类型,

  catch(Exception2 e2){}//一旦满足就执行catch中的代码,该catch以后的其他catch不在匹配。

  finally{//一定会被执行的代码}//finally为可选

6、对于运行时异常,可不进行显示的异常处理,但是对于编译时异常,则必须进行异常处理。

7、若有多个catch语句,且异常类对象存在继承关系,则子类必须写在父类前面,否则无法通过编译。

8、若存在finally语句,则在处理异常结束之前(如return)将执行finally里面的语句。

9、若不知道如何对异常进行处理,则可在方法声明处,显示的抛出该异常对象的类型,由该方法的调用者负责处理(throws),若调用者也不知道如何处理异常,则继续向上一调用者抛出该类异常,最高可抛给虚拟机进行处理。

10、手动抛出的异常类对象可以是已提供的异常类,也可以是自定义的异常类。

--例:

public class MyException extends Exception{
static final long serialVersionUID = -123435;//提供一个唯一的序列号
//提供几个构造器
public MyException(){
super();
}
public MyException(String str){
super(str);
}
}

11、子类重写父类的方法,其抛出的异常类型只能是被重写的方法的异常类的子类或异常类型一样。

12、异常总结(抓抛模型):

--try:执行可能产生的异常的代码

--catch:捕获异常

--finally:无论是否发生异常,代码总被执行

--throw:异常发生阶段(手动抛出异常对象)

--throws:异常处理方式(声明方法可能要抛出的各种异常类)

最新文章

  1. lsof命令
  2. 【Python】引用计数
  3. 绘制图形与3D增强技巧(二)----直线图元之点画
  4. Oracle 建表,递增序列,触发器,分析函数row_number() ,partition by 子句。
  5. ubuntu下java环境变量配置
  6. Mixing Delphi and C++(相互调用)
  7. Spring事务的传播特性和隔离级别
  8. (转载)ConcurrentHashMap 原理
  9. android开发之merge结合include优化布局
  10. tcp/心跳包
  11. 连接远程hbase长时间等待问题
  12. Cocos2d-x内存管理解说在ios开发中
  13. Set vs. Set<?>(转)
  14. Python学习笔记整理总结【Memcache & Redis】
  15. 4.4清北学堂Day1 主要内容:数论,数学
  16. python day06笔记总结
  17. (点到线段的最短距离)51nod1298 圆与三角形
  18. Flink--将表转换为DataStream或DataSet
  19. 转 fiddler常见的应用场景
  20. 树莓派Raspberry Pi zero w无线联网实测

热门文章

  1. Struts2学习(七)
  2. 【原】python常用模块
  3. Java基础 -4.2
  4. 02-10Android学习进度报告十
  5. 三、linux基础-常用命令man_cd_|_find_ln_>_history
  6. Linux centos7 VMware Apache访问日志不记录静态文件、访问日志切割、静态元素过期时间
  7. 【C++初学者自学笔记一】(把自己刚学到的东西做一下总结,如果有哪些地方不足请留言指正)
  8. Sqlserver2012 使用sql语句增加(或删除)表一个字段
  9. smoj2828子数组有主元素
  10. python面向对象之元类