异常处理与 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微服务化后,在稳定性保障上走过的路,经历过的痛
|
1天前
|
云安全 人工智能 自然语言处理
|
6天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
316 116
|
8天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
617 53
Meta SAM3开源:让图像分割,听懂你的话
|
21天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
5天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
|
4天前
|
弹性计算 人工智能 Cloud Native
阿里云无门槛和有门槛优惠券解析:学生券,满减券,补贴券等优惠券领取与使用介绍
为了回馈用户与助力更多用户节省上云成本,阿里云会经常推出各种优惠券相关的活动,包括无门槛优惠券和有门槛优惠券。本文将详细介绍阿里云无门槛优惠券的领取与使用方式,同时也会概述几种常见的有门槛优惠券,帮助用户更好地利用这些优惠,降低云服务的成本。
272 132
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
AgentEvolver:让智能体系统学会「自我进化」
AgentEvolver 是一个自进化智能体系统,通过自我任务生成、经验导航与反思归因三大机制,推动AI从“被动执行”迈向“主动学习”。它显著提升强化学习效率,在更少参数下实现更强性能,助力智能体持续自我迭代。开源地址:https://github.com/modelscope/AgentEvolver
423 29

热门文章

最新文章