栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

异常、throw关键字、finally关键字 2022.6.15

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

异常、throw关键字、finally关键字 2022.6.15

异常的好处:
*      学习异常,了解异常,处理异常,从而保证程序可以正常的运行

Throwable类
*      类的特点
*          Throwable 类是 Java 语言中所有错误(Error)或异常(Exception)的父类
*              错误(Error):Java程序出现了不可以通过后期自动补救方法进行解决的错误,只能改写代码
*              异常(Exception):Java程序出现可以通过后期自动补救方法进行解决的错误,不用后期改写代码,提前做好准备
*      类的位置
*          java.lang
*      类的构造器
*          public Throwable()
*              构造一个将 null 作为其详细消息的新 throwable。
*          public Throwable(String message)
*              构造带指定详细消息的新 throwable。
*      类的方法
*          public void printStackTrace()
*              将此 throwable 及其追踪输出至标准错误流
*          public String getMessage()
*              返回此 throwable 的详细消息字符串。

异常的分类:
*      运行时异常
*      编译时异常
*
* 运行时异常:
*      含义:
*          代码没有任何语法格式错误,在运行代码的时候出现了非正常的情况导致JVM停止运行
*      位置:
*          RuntimeException类及其子类
*      常见:
*          空指针异常
*          索引越界异常
*          类型转换异常
*          数据格式化异常
*          .......
*
* 编译时异常
*      含义:
*          代码没有任何语法格式错误,在编译代码的时候出现了编译报错
*      位置:
*          Exception类及其子类(RuntimeException类及其子类除外)

异常处理:
*      含义:
*          Java程序中所有的异常必须进行处理
*      分类:
*          异常声明处理:将异常问题交给调用者进行解决
*          异常捕获处理:将异常问题自己独立进行解决(推荐)
*      关键字:
*          throws,try,catch,finally
*
* 运行时异常的处理方案:
*      1.异常声明处理
*      2.异常捕获处理
*      3.无需程序员进行处理
*          如果程序员不针对运行时异常处理JVM主动进行处理:
*              (1)终止JVM
*              (2)终止的同时,将异常信息进行打印
*
* 编译时异常的处理方案:
*      1.异常声明处理
*      2.异常捕获处理

throw关键字:
*      含义:
*          抛出指定的异常对象
*      格式:
*          throw new 异常类名(实参);

异常处理方式1:异常声明处理
*      含义:
*          含有异常的方法不进行异常的处理,将异常交给其调用者进行解决
*      格式:
*          修饰符 返回类型 方法名 () throws 异常类名1,异常类名2,......,异常类名n {}

异常声明处理的注意事项:继承
*      继承关系出现在抛出的异常对象中
*          1.进行异常声明时无需关注声明异常子父类的前后顺序
*          2.进行异常声明时可以直接声明异常的父类
*      继承关系出现在异常所在的类中
*          异常在父类被重写的方法中,子类重写该方法时无需理会该异常
*          异常在子类重写后的方法中,处理方案只有唯一的一种,异常的捕获处理

异常捕获处理
*      含义:
*          捕获到程序出现的异常,针对异常进行合理的解决方案,从而保证程序可以正常运行
*      格式1:
*          try {
*              可能出现异常的代码
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          }
*      格式2:
*          try {
*              可能出现异常的代码
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          } ......
*      格式3:
*          try {
*              可能出现异常的代码
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          } finally {
*              必须执行的代码
*          }
*      格式4:
*          try {
*              可能出现异常的代码
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          }
*          ......
*          finally {
*              必须执行的代码
*          }
*      格式5(JDK7.0):
*          try (
*              类名 对象名 = new 类名();
*              ......
*          ) {
*              可能出现异常的代码
*          } catch () {
*              出现该异常的解决方案
*          }
*      格式6(JDK7.0):
*          try (
*              类名 对象名 = new 类名();
*              ......
*          ) {
*              可能出现异常的代码
*          } catch () {
*              出现该异常的解决方案
*          } catch () {
*              出现该异常的解决方案
*          } .....

异常捕获的注意事项:
*      继承关系出现在抛出的异常对象中
*          1.分别捕获,分别处理
*              场景:适用于每个异常都有特有的解决方案
*          2.一次捕获,分别处理
*              场景:每个异常存在关联性,解决方案各自不同
*              注意:需要将异常子类的处理放在父类的上面(前面)
*          3.一次捕获,一次处理
*              场景:每个异常存在关联性,解决方案相同
*      继承关系出现在异常所在的类中
*          异常在父类被重写的方法中,处理方案只有唯一的一种,异常的捕获处理

* finally关键字
*      含义:
*          在进行异常捕获声明时必须执行的代a码
*      格式:
*          try {
*              可能出现异常的代码
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          } finally {
*              必须执行的代码
*          }
*
*
*          try {
*              可能出现异常的代码
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          }
*          ......
*          finally {
*              必须执行的代码
*          }

* finally关键字
*      含义:
*          在进行异常捕获声明时必须执行的代a码
*      格式:
*          try {
*              可能出现异常的代码
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          } finally {
*              必须执行的代码
*          }
*
*
*          try {
*              可能出现异常的代码
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          } catch (异常类型 对象名) {
*              出现该异常的解决方案
*          }
*          ......
*          finally {
*              必须执行的代码
*          }

finally关键字的注意事项
*      在try...catch...finally里面尽量避免使用return

自定义异常:
*      自定义运行时异常
*      自定义编译时异常(重点)
*
* 自定义运行时异常:
*      1.创建自定义运行时异常类
*      2.将该类继承RuntimeException类
*      3.根据父类生成合适的构造器(至少包含无参和String参数的构造器)
*
* 自定义编译时异常:
*      1.创建自定义编译时异常类
*      2.将该类继承Exception类
*      3.根据父类生成合适的构造器(至少包含无参和String参数的构造器)

包装类整型的特殊数据:
*      在底层缓冲了一个长度为256的对应包装类型的数组,存储-128~127的该类型的对象,如果在范围内,拿数组中对象进行复用,
*      如果不在范围内,new新的该类型的对象
*
* 包装类字符型的特殊数据:
*      在底层缓冲了一个长度为128的对应包装类型的数组,存储ASCII码表上的所有字符对象,如果在范围内,拿数组中对象进行复用,
*      如果不在范围内,new新的该类型的对象
*
* 包装类布尔型的特殊数据:
*      在底层缓冲了两个Boolean对象,分别存储true和false,如果使用拿对应的对象进行复用

String类的笔试题1:
*      比较字符串的地址值
*
* 字符串的字面值常量存储于内存中的"字符串常量池"

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976006.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号