异常处理与 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. 关闭外层流

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

相关文章
|
消息中间件 缓存 运维
A微服务稳定性保障的“痛”(项目经验教训)
Spring cloud+Spring boot微服务化后,在稳定性保障上走过的路,经历过的痛
|
11天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1229 5
|
10天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1211 87
|
10天前
|
云栖大会
阿里云云栖大会2025年9月24日开启,免费申请大会门票,速度领取~
2025云栖大会将于9月24-26日举行,官网免费预约畅享票,审核后短信通知,持证件入场
1795 13
|
20天前
|
人工智能 运维 安全
|
3天前
|
资源调度
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
234 127