JavaSE基础(day17)(1)异常(2)File类(3)I/O流

版权声明:cxyo.cn https://blog.csdn.net/weixin_44075537/article/details/85002150

默写:
1.编程题
自定义Student类,属性有:学号和姓名,不需要编写该类封装的代码。
自定义TestStudent类,在main()方法中创建两个Set集合,其中第一个Set集合按照元素的学号自然排序放入3个学生信息并打印;其中另外一个Set集合按照比较器进行姓名的排序并打印。

今天内容:
(1)异常
(2)File类
(3)I/O流

1.异常(重点)
1.1 基本概念
异常表示不正常的意思,在java中主要指在程序运行阶段产生的错误。
java.lang.Throwable类是Java中所有错误或异常的超类,主要实现子类有:Error类
和 Exception类。
其中Error类主要描述一些比较严重的错误,无法通过编程解决的错误。
其中Exception类主要描述一些轻微的错误,可以通过编程来解决的错误。

1.2 异常的主要分类
java.lang.Exception类是所有异常的超类,主要分为以下两大类:
RuntimeException类 - 运行时异常类,也叫作非检测性异常。
- 非检测异常就是指在编译阶段无法被编译器检测出来的异常。
IOException类和其它异常类 - 其它异常类,也叫作检测性异常。

注意:
当程序执行过程中产生异常并没有手动处理时,则采用默认处理方式,默认处理的方式就是:打印异常名称、异常原因、异常位置等信息并终止程序,导致后续代码无法执行

其中RuntimeException类的主要子类:
ArithmeticException类 - 算数异常
ArrayIndexOutofBoundsException类 - 数组下标越界异常(间接子类)
NullPointerException类 - 空指针异常
ClassCastException类 - 类型转换异常
NumberFormatException类 - 数字格式异常(间接子类)

1.3 运行时异常的处理
对于绝大多数的运行时异常/非检测性异常都可以采用if()条件判断的方式避免发生。

1.4 异常的捕获
(1)语法格式

   try{
      编写可能产生异常的语句块;
   }catch(异常类型 变量名){
      编写针对该类异常的处理语句块;
   }
   ... ...
   finally{
      编写无论是否发生异常都应该执行的语句块;
   }

(2)注意事项
a.当需要catch()多种不同类型的异常时,切记小类型需要放在大类型的上面。
推荐一种懒人的写法:

  catch(Exception ex){
         ... ...
     } 

b.finally中通常编写无论是否发生异常都应该执行的代码,因此通常用来善后处理,
比如:关闭打开的文件,断开数据库的连接等。

(3)执行流程

   try{
      a;
      b;  - 表示可能发生异常的语句
      c;
   }catch(Exception e){
      d;
   }
   finally{
      e;
   }

当上述代码没有发生异常时的执行流程:a b c e;
当上述代码发生异常时的执行流程是: a b d e;

1.5 异常的抛出
(1)基本概念
在某些特殊场合中,对于出现的异常无法直接处理/不便于处理时,就可以选择将该异常转移给该方法的调用者,这种形式叫做异常的抛出。

(2)语法格式

   返回值类型 方法名(形参列表) throws 异常类型1,异常类型2,...{ 方法体; }

如:

public void show() throws IOException{ ... }

(3)方法重写的原则
a.要求方法名、参数列表、返回值类型相同。
b.访问权限可以变大,不能变小。
c.不能抛出更大的异常。

注意:
当子类中重写父类的方法时,可以抛出一样的异常、可以抛出更小的异常、可以不抛出异常,但不能抛出更大的异常,以及同级却不一样的异常。

1.6 自定义异常
(1)自定义异常的方式
自定义类继承Exception类或者其子类,提供两个版本的构造方法,一个是无参的构造方法,另外一个是String类型变量作为参数的构造方法。

(2)异常对象的抛出
throw new 异常类型();
如:
throw new AgeException(“年龄不合理!”);

视频
javaseday17-异常概念和分类以及运行异常-01
https://v.qq.com/txp/iframe/player.html?vid=k0799bdp844
javaseday17-异常的捕获和执行流程-02
https://v.qq.com/txp/iframe/player.html?vid=i0799t5zro3
javaseday17-异常的抛出-03
https://v.qq.com/txp/iframe/player.html?vid=m0799n35u1o
javaseday17-自定义异常-04
https://v.qq.com/txp/iframe/player.html?vid=p0799eayntn

代码
https://pan.baidu.com/s/1x43pCPhhI8Q9i30FLVVDhQ

作业:
1.在学生信息管理系统中增加学生信息的学号异常类和年龄异常类。
2.查询并尝试使用File类中的方法。

猜你喜欢

转载自blog.csdn.net/weixin_44075537/article/details/85002150