1,异常分类

从异常处理机制的角度可以分为两类,Unchecked Exceptions和Checked Exceptions。Unchecked Exceptions指的是被程序员check的异常,Checked Exceptions指的是被编译器check的异常。如下图:

Throwable下面有两个子类,分别为Error和Exception,其中所有的Error类和Exception类中的RuntimeException类都属于Unchecked异常,其余都属于Checked异常。

2,处理机制

Checked Exceptions可能会发生的地方,编译器会强制要求你要么处理这个异常(try catch块进行处理),要么在这个方法的头部声明这个方法可能会抛出一个异常,对调用这个方法的方法做一个警告,要求调用者来处理这个异常(throws声明)。Unchecked Exceptions可能会发生的地方,编译器无法预见,因此不要求做任何处理。一般来说,Checked Exceptions常常是可以捕获捕获并处理的,往往由与客户端的不正确调用引起,捕获异常并处理可以给用户提供一次改正的机会,提高程序的健壮性。例如:用户指定打开文件路径的文件并不存在,因此可以捕获这个异常,做一个提示,并让用户可以重新选择路径。Unchecked Exceptions一般捕获后没有什么价值的,其包含的Error属于系统的内部错误,是由于设备错误,物理限制,内存不足,JVM发生内部错误,不兼容等等原因导致的,因此捕获后没有什么处理价值。另一种RuntimeException则是由于程序员本身代码有错误,发生除零错误,空指针异常,数组越界等等,这种纯粹属于程序员写代码时的失误引起,需要改变程序,因此捕获的价值很低,重写代码找出bug即可。

3,处理实例

Unchecked Exceptions:

在函数A中抛出Unchecked异常,不强制声明或捕获。

public class son {public static void main(String[] args) {C();}public static void A(){throw new RuntimeException();}public  static void B() {A();}public static  void C() {B();}
}

你非要捕获他也可以。。。一般用处不大。

public class son {public static void main(String[] args)  {try {C();} catch (RuntimeException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("捕捉到Unchecked Exception");}}public static void A() throws RuntimeException{throw new RuntimeException();}public  static void B() throws RuntimeException {A();}public static  void C() throws RuntimeException {B();}
}

Checked Exceptions

在A中抛出Checked异常,需要声明或者捕获。

public class son {public static void main(String[] args) throws IOException {C();}public static void A() throws IOException{throw new IOException();}public  static void B() throws IOException {A();}public static  void C() throws IOException {B();}
}

public class son {public static void main(String[] args)  {try {C();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("捕捉到啦");}}public static void A() throws IOException{throw new IOException();}public  static void B() throws IOException {A();}public static  void C() throws IOException {B();}
}

Checked异常和Unchecked异常相关推荐

  1. Java异常:选择Checked Exception还是Unchecked Exception?

    Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和unchecked异常之间的区别是: Checked异常必须被显式地捕获或者传递,如B ...

  2. [转载] Java异常:选择Checked Exception还是Unchecked Exception?

    参考链接: Java中的已检查与未检查异常| checked或unchecked异常 Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和 ...

  3. Checked exception及Unchecked exception对比

    一.异常分类 从异常处理机制的角度可以分为两类,Unchecked Exceptions和Checked Exceptions.Check即编译器检查程序是否已经抛出或处理了可能的异常.Uncheck ...

  4. 检查型异常(Checked Exception)与非检查型异常(Unchecked Exception)

    检查型异常(Checked Exception)与非检查型异常(Unchecked Exception) 参考文章: (1)检查型异常(Checked Exception)与非检查型异常(Unchec ...

  5. 基础知识《十》unchecked异常和checked异常

    Exception和继承自Exception的RuntimeException有什么区别呢?  Java compiler要求所有的Exception 要么被catch,要么被throw,除非这是一个 ...

  6. unchecked异常_为什么要在Java中使用Unchecked异常而不是Checked异常

    unchecked异常 关于检查与未检查的异常的争论可以追溯到过去. 有人说这是Java包含的最佳功能之一. 其他人则说这是他们最大的错误之一[ 1 ]. 辩论似乎结束了. 在这篇文章中,我将尝试包含 ...

  7. 为什么要在Java中使用Unchecked异常而不是Checked异常

    关于检查与未检查的异常的争论可以追溯到过去. 有人说这是Java包含的最佳功能之一. 其他人则说这是他们最大的错误之一[ 1 ]. 辩论似乎结束了. 在这篇文章中,我将尝试包含指向该主题的文章和书籍的 ...

  8. Checked异常和Runtime异常

    Checked异常和Runtime异常 - 爱你一万年123 - 博客园 一 Checked异常和Runtime异常介绍 Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常 ...

  9. 通俗理解checked Exception和unchecked Exception

    首先放一张Java异常层次结构图: 错误(Error)和异常(Exception)是不同的. Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题.大多数错误与代码编写者执行的操作无 ...

最新文章

  1. Windows注册文件类型信息的学习心得
  2. Linux常用命令行
  3. Enterprise Library 4.1 Application Settings 快速使用图文笔记
  4. Synchronize死锁
  5. 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
  6. mysql数据加百分号_使用MySQL SELECT语句时,在每个值的末尾添加一个百分号(%)...
  7. icmp时间戳请求和应答程序实现_ICMP报文详解之ping实现
  8. 各种排序总结(三)堆排序
  9. 递归算法经典实例小结(C#实现)
  10. 求正方形和长方形的个数
  11. badboy录制脚本错误问题解决
  12. 使用python解析Wordpress导出的xml文件
  13. matlab不能定位,matlab定位问题!
  14. TryHackMe-Gatekeeper
  15. Android安全检测之加固的坑
  16. Sikuli异常RunTimeINIT: *** terminating: libs to export not found on above classpath: /sikulixlibs/wind
  17. Shell中显示彩色二维码
  18. Zynq-Linux移植学习笔记之24-VPVN温度监测
  19. 从来只留一场梦 一场春梦成白头 上软疑似解体 忆仙剑而作
  20. U盘装Win7系统,找不到任何设备驱动程序

热门文章

  1. scrapy运行多个爬虫
  2. 基于 RTAB-MAP 算法实现真实三维场景重建
  3. 用abcde表示成绩C语言if语句,给出一百分制成绩,要求输出成绩等级A,B,C,D,E
  4. 游戏盾是怎么防御攻击的
  5. handoff (wimax of nist)
  6. ZOJ:Z1085 珠心算测验(加强版)
  7. Origin使两张图重叠展示在一张图上
  8. 2022北京老博会,第九届中国北京国际老年产业博览会
  9. Excel在数据表中悬停鼠标显示数据值
  10. 软银拿下Uber15%股份,滴滴在背后笑了