异常处理与 io流

简介: 异常处理与 io流异常处理I/O编程

异常处理

提高程序的容错性 : 解决运行时错误

避免异常: 尽可能使异常不出现, 不发生

处理异常: 当异常发生时, 应对这种异常 有部分代码,正常情况不执行,异常发生时才执行


异常的分类

Throwable 所有异常的父类

|- Error 错误 严重的底层错误 不可避免 无法处理 不用处理

|- Exception 异常 可以处理

|- RuntimeException 子类 运行时异常 未检查异常 可以避免 可以处理,可以不处理

|- 非RuntimeException子类 已检查异常 不可避免 必须处理


0.png


异常对象的产生和传递

异常对象的产生:

throw 异常对象;

抛出一个异常

抛出异常: 方法以异常对象作为返回值,返回 等同于return语句

异常对象的传递:

沿着方法调用链, 以返回值的形式, 逐级回传,直至JVM. JVM就会中止运行


异常的处理

1.声明抛出

throws 异常类名1 , 异常类名2 , … 异常类名n

方法覆盖时 , 子类方法不能比父类抛出更多的异常

2.捕获异常:


try {
  语句1 
  语句2 
  ... 
  语句n
 }
 catch(异常类型A e){ 
 }
 catch(异常类型B e){
  }
 finally{ 无论如何都会执行 通常用来释放资源
   }
   ...

可以同时捕获父类异常和子类异常, 但必须先捕获子类异常, 再捕获父类异常


try{} catch(){}
try{} catch(){} finally{}
try{} finally{} //无法捕获异常, 利用finally必须执行的特点, 完成特定操作


I/O编程

Java程序的输入和输出

流的概念和分类

流对象: 用来传输数据的对象

流的分类:

流的方向: 输入流 / 输出流 输入流: 读数据 输出流: 写数据

数据单位: 字节流 / 字符流 字节流: 以字节为单位 处理一切数据

字符流: 以字符为单位 处理文本数据 (.txt .html .java .xml)

流的功能: 节点流 / 过滤流

节点流: 实际负责数据传输

过滤流: 为节点流增强功能


1.png

字节流:

InputStream/OutputStream 抽象类 字节流的父类

FileInputStream/FileOutputStream 文件字节流 节点流

OutputStream os = null; 
try {
   os = new FileOutputStream("a.txt") ;
   os.write('D');
}
catch (IOException e) { 
  e.printStackTrace(); 
}
finally{ 
  try {
  if (os!= null) os.close(); //关闭流
 }
  catch (IOException e) {
  e.printStackTrace();
   }
 }


try - with - resource 
 try (定义资源 实现了AutoCloseable接口){ 代码 } 
  catch(Exception e){} 
 try (OutputStream os = new FileOutputStream("a.txt"))
 {
  os.write('D');
 }
 catch(IOException e){
    e.printStackTrace();
 }

BufferedInputStream/BufferedOutputStream 过滤流 缓冲功能, 提高I/O效率

flush() 清空缓冲区 对于缓冲输出流 BuffedOutputStream

PrintStream : 取代BufferedOutputStream 带缓冲的字节输出流

FileOutputStream fos = new FileOutputStream("a.txt");
BufferedOutputStream out = new BufferedOutputStream(fos); 
out.write('A'); 
out.close();

I/O编程基本顺序:

  1. 创建节点流
  2. 封装过滤流
  3. 读/写数据
  4. 关闭外层流

学得有点慢了,需要加快速度

相关文章
|
2月前
|
C语言 iOS开发 C++
10. C++IO流
10. C++IO流
24 0
|
2月前
|
安全 C语言 C++
【C++】—— C++的IO流
【C++】—— C++的IO流
|
2月前
|
安全 Java 程序员
【Java 异常处理】异常处理机制,内置异常类,如何捕获异常
【Java 异常处理】异常处理机制,内置异常类,如何捕获异常
|
11月前
|
iOS开发
C++IO流(2)
C++IO流(2)
|
算法 关系型数据库 MySQL
c++IO流——开工啦
📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++阶段>——目标Windows,MySQL,Qt,数据结构与算法,Linux,多线程,会持续分享学习成果和小项目的 📖作者主页:热爱编程的小K 📖专栏链接:c++ 🎉欢迎各位→点赞👏 + 收藏💞 + 留言🔔​ 💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🐾 ———————————————— 版权声明:本文为CSDN博主「热爱编程的小K」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_72157449
c++IO流——开工啦
|
存储
IO流理解
个人学习理解
33 0
|
存储 Java
java IO流进阶 对象处理流, 转换流, 打印流
java IO流进阶——对象处理流,转换流,打印流 内容分享。
77 0
|
算法 编译器 C语言
【C++】IO流(上)
【C++】IO流(上)
【C++】IO流(上)
|
安全 C语言 C++
|
算法 C语言 C++