JAVA进阶 面向对象程序设计 第8周 异常处理和输入输出

8.1 异常

8.1.1 Java异常捕捉机制

  • 把可能产生异常的代码放在try里面,catch来捕捉可能的异常。
  • 可以有很多个catch,因为try可能抛出不同的错误。
try{
	//可能异常的代码
}catch(Type1 id1){
	//处理Type1异常的代码
}catch(Type2 id2){
	//处理Type2异常的代码
}

8.1.2 异常捕捉流程
在这里插入图片描述
8.1.3 对异常对象的操作

1.设异常变量为e,则

  • e.getMessge():显示了异常发生时,放在异常对象中的值。
  • e.toString()或e:显示了异常类的名字。
  • e.printStackTrace():显示异常的调用轨迹。//为处理异常提供了遍历

2.若在当前层面上需要处理,但不能做最终决定,那么将异常再度抛出,留给后面的处理。

catch(Exception e){
	System.err.println("An exception was thrown");
	throw e;	//再度抛出
}

8.2 异常机制

Q: 如果要读取一个文件,那么他的流程为
1、打开文件
2、判断文件大小
3、分配足够内存空间
4、把文件读入内存
5、关闭文件

但我们在读文件过程中,可能出现各种各样的麻烦:文件不存在、内存不足够、文件损坏等等等…,那么我们该如何处理?

两种处理方案:

  • 用了很多的else,if语句,将业务逻辑分隔开来,可读性降低。

  • 不方便修改、添加处理方法。

在这里插入图片描述

②使用异常机制

try中出现问题,跳到catch处理异常。

try{
	//业务逻辑
	open the file;
	detemine its size;
	allocatee that much memory;
	read the file into memory;
	close the file;
	//异常处理代码
}catch(fileOpenFailed){
	doSomething;
}catch(sizeDeterminationFailed){
	doSomething;
}........
//等等,处理5种异常。

8.2.1 异常机制的好处

清晰地分开了正常的业务逻辑代码和异常处理代码

8.2.2 异常声明

  • 如果函数可能抛出异常,那么要在函数头部加以声明
    void f() throws OpenException{
    //…
    }
  • 也可以声明没抛出的异常。//因为现在没抛出,也许将来会修改让他抛出。

**8.2.3 能抛出的对象 **

  • 继承了Throwable的对象,//可直接创建Throwable的子类抛出
  • Exception类继承了Throwable
  • 常用: throw new Exception();
    throw new Exception(“Help”);

8.3 流

8.3.1 流的基础类

  • InputStream
  • OutputStream

8.3.2 文件流

  • FileInputStream
  • FileOutputStream
  • 实际工程较少使用

8.3.3 流过滤器
Data

  • DataInputStream
  • DataOutputStream
  • 用以读写二进制方式表达的基本数据类型的数据。

8.4 文本输入输出

  • 二进制文件采用InputStream/OutputStream
  • 文本数据采用Reader/Writer
发布了17 篇原创文章 · 获赞 0 · 访问量 457

猜你喜欢

转载自blog.csdn.net/weixin_43786756/article/details/104074658
今日推荐