面向对象之12:Exception类、RuntimeException类(异常机制)、包装类 的使用细节、类与类之间的关系 总结:

目录

异常:

Java中异常体系图一览:

异常处理之 异常三连 try-catch-finally:

try-catch语法:​

如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等):则使用 异常三连 try-catch-finally ,语法:​

try-finally 语法:​

JDK1.7优化后 try-catch-fially (关闭连接,释放资源) 新语法:​

异常处理之 throws

throws 处理机制图:​

 throws 说明:

自定义异常:

throw 和 throws 的区别:​

异常的作用:

包装类:

包装类对应表:​

包装类体系图:​

JDK1.5后包装类的自动装箱与自动拆箱:

Integer类常用API:

 整数互相比较:

Integer.valueOf 方法(实现自动装箱的方法)解读:

类与类之间的关系:

【1】 继承关系(Java语言 的继承属于单继承):

【2】实现关系(Java语言中的实现 属于多实现):

【3】依赖关系(需要什么来做某件事) :

【4】关联关系(某人和某人,某物和某物之间建立的连接关系。):

【5】聚合关系(什么整体里 有一个什么):

【6】组合关系(什么包含什么,且包含的那个特别重要,无可替代的):

 Sum up:


异常:

  1. 在Java语言中,将程序执行中发生不正常的情况称之为“异常”,(开发过程中的语法错误与逻辑错误与异常无关)。
  2. Java中 执行过程中可能发生的异常错误 分为两大类:       
    1. Error(错误):JVM 无法解决的严重问题,比如:JVM 内部错误,资源耗尽等严重情况,Error 是严重错误,程序会立即崩溃。比如:OutOfMemoryError,……
    2. Exception(异常):其他以编程错误或偶然的外在因素 导致的 一般性问题,这种问题可以使用针对性的代码进行解决。异常分为两大类:
      1. 运行时异常:编译器检查不出来,一般是指编程时的逻辑错误,是开发者应该避免器出现的异常,java.lang.RuntimException类以及它的子类都是运行时异常。对于运行时异常,可以选择性的不作处理,因为运行时异常较为普通,若全处理可能出现的运行时异常可能会对程序的可读性与运行效率产生影响。 比如常见的:NullPointerException,ArithmeticException,NumberFormatException,ArithmeticException,ClassCastException,……
      2. 编译时异常:是编译器编译时要求必须处理的异常,否则编译不通过。比如:ClassNotFoundException,FileNotFoundException,……
  3. 异常应该尽量提前避免,异常也无法做到绝对避免的,可能太多种情况,开发者只能提前干预。异常一旦出现了,如果没有提前处理,程序就会退出JVM而终止。

Java中异常体系图一览:


异常处理之 异常三连 try-catch-finally:

try-catch语法:

  1. 如果异常发生了,则在try语句块中的异常发生后面的代码不会执行了,JVM将异常封装进Exception对象 e中,将 异常传递给 catch,直接进入到catch语句块中。
  2. 如果异常没有发生,则顺序执行try的代码块,如果try-catch后面还有代码依然会执行。不会进入到catch语句块中。
  3. 可以有多个catch语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前。如果发生异常,只会匹配捕获最先出现的那个异常。(如果父类异常在前,就不管是什么异常都会捕获。)
  4. 也可以把多个可能处理的异常写在一个catch语句块中。语法:
  5. 可以使用异常的父类 Exception 或者 Throwable 捕获一切可能出现的异常(使用最多!)。语法:
  6. 如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等):则使用 异常三连 try-catch-finally ,语法:

  7. 说明:就算try语句块中 或者 try语句块外的代码 有return 语句,finally依然也会执行!,只有一种情况finally里面的代码不会执行,那就是在finally语句块上面有 System.exit(0 or 非0); 把JVM干掉,就不会执行!
  8. 如果try-catch-finally 异常三连下面依然有代码,下面的代码依然会执行!不会因为出现异常而终止,因为已经处理了。
  9. try-finally 语法:

  10. 说明:try-finally 这种用法相当于没有 捕获异常,因此如果出现异常 程序依然会 直接崩掉 退出。
  11. try-catch 应用场景(使用极少):不管程序是否发生异常,都必须执行某个业务逻辑。就算有 return 也会执行!
  12. JDK1.7优化后 try-catch-fially (关闭连接,释放资源) 新语法:

  13. 使用这种语法,JVM 会自动 把 连接或者资源 关闭,不再手动调用关闭资源的API了。 省略了try-catch-finally 的那种繁琐语法。

异常处理之 throws

  1. throws 处理异常是以方法为单位的处理方式,出现在方法的签名处。
  2. throws 语法:比如:
  3. 使用说明: 如果一个方法 中的语句在执行是 可能生成某种编译时异常,但是并不确定如何处理这个编译时异常,则 此方法 应该显式声明的抛出异常,表明该方法将不对这些异常进行处理, 而是由 该方法的 调用者 负责处理。(就是无情甩锅)。最顶级的处理者就是 JVM。(它的处理方法简单粗暴,直接停止程序运行)。
  4. 在方法声明中 用 throws 语句 可以声明抛出异常的列表,throws 后面的异常类型可以是方法中产生的一个或多个异常类型,异常与异常之间用 , 号隔开,也可以是它的父类。一般都是抛出一个父类异常即可,抛出一切异常。
  5. throws处理机制:try-catch-finally 和 thorws 二选一。当前两个都可以写,如果两者并存,将会优先处理 try-catch-finally 异常三连语句。
  6. 如果需要处理的运行时异常,而开发者 又没有显示的处理运行时异常。那么当前这个方法 的签名上 默认隐式 的 有个throw 异常语句。不需要特别关注。
  7. throws 处理机制图:

  •  throws 说明:

    • 对于编译时异常,程序中必须处理。try-catch-finally  或者 throws
    • 对于运行时异常,程序中如果没有处理,默认就是在方法的签名上 throws
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值