[TOC]
参考教程
Java 异常
异常的分类
Throwable 类是所有异常和错误的超类,下面有 Error 和 Exception 两个子类分别表示错误和异常
-
检查性异常
程序员无法预见的异常
从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过
-
运行时异常
程序员可预见的异常,编译时可忽略
属于不检查异常,程序中可以选择捕获处理,也可以不处理
-
错误(Error)
脱离程序员控制的错误
Error 类型通常是灾难性的致命错误,不是程序可以控制的
异常的产生和处理
Java 通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法会产生代表该异常的一个对象,并把它交给运行时的系统,运行时系统寻找相应的代码来处理这一异常。
把生成异常对象,并把它提交给运行时系统的过程称为拋出(throw)异常。运行时系统在方法的调用栈中查找,直到找到能够处理该类型异常的对象,这一个过程称为捕获(catch)异常。
try-catch 语句用于捕获并处理异常,finally 语句用于在任何情况下(除特殊情况外)都必须执行的代码,throw 语句用于拋出异常,throws 语句用于声明可能会出现的异常
如果代码在 try 内部执行一条 System.exit() 语句,则应用程序将终止而不会执行 finally
异常的使用原则
异常处理不应用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应处理。
- 在当前方法声明中使用 try catch 语句捕获异常
- 一个方法被覆盖时,覆盖它的方法必须拋出相同的异常或异常的子类
- 如果父类抛出多个异常,则覆盖方法必须拋出那些异常的一个子集,而不能拋出新异常
Java 自定义异常
-
所有异常都必须是 Throwable 的子类、
如果希望写一个检查性异常类,则需要继承 Exception 类
如果想写一个运行时异常类,那么需要继承 RuntimeException 类
-
自定义异常类一般包含两个构造方法:一个是无参的默认构造方法,另一个构造方法以字符串的形式接收一个定制的异常消息,并将该消息传递给超类的构造方法
Java 输入输出流
分类
- 流的方向:输入流和输出流
- 数据单位:字节流和字符流
- 功能:节点流和处理流
Java输入输出流
- Java 中所有输入流都是 InputStream 抽象类(字节输入流)和 Reader 抽象类(字符输入流)的子类
- Java 中所有输出流类都是 OutputStream 抽象类(字节输出流)和 Writer 抽象类(字符输出流)的子类
Java 系统流
每个 Java 程序运行时都带有一个系统流,系统流对应的类为 java.lang.System。Sytem 类封装了 Java 程序运行时的 3 个系统流,分别通过 in、out 和 err 变量来引用。
File 类
-
Java 中的 File 类是文件和目录路径名的抽象形式
-
Java File 类是
java.io
包中唯一代表磁盘文件本身的对象。File 类表示处理文件和文件系统的相关信息。File 类不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性。File 类实现了文件/目录的查看、创建、删除等方法
动态读写文件内容
- 动态读取需要用到 Java 中的 RandomAccessFile 类,该类中有一个文件指针用于标识当前流的读写位置,这个指针可以向前或者向后移动。
- RandomAccessFile 类提供了读写数据的一些方法
字节流的读写
字节输入流
InputStream 类及其子类的对象
- ByteArrayInputStream: 字节数组输入流
- FileInputStream : 文件输入流
字节输出流
OutputStream 类及其子类的对象
- ByteArrayOutputStream: 字节数组输出流
- FileOutputStream : 文件输出流
字符流的读写
字符输入流
Reader 类及其子类的对象
- FileReader : 字符文件输入流
- BufferedReader : 字符缓冲区输入流
字符输出流
Writer 类及其子类的对象
- FileWriter : 字符文件输出流
- BufferedWriter : 字符缓冲区输出流
网友评论