异常和I/O流

异常

要点提示: :异常处理使得程序可以处理非预期的情景,并且继续正常的处理。

概述: 在程序编译和运行的过程中出现的一些错误问题,对于这些错误和问题而言,能否通过面向对象的思想 将这些错误和问题进行类的封装。
异常描述

  • 异常名称 (可以自定义)
  • 异常产生的原因 (可以自定义)
  • 异常产生的位置(代码中的某一行) (由JVM决定)
  • 异常产生的线程 (由JVM决定)

异常发生原因: 基本上是由JVM自动检测的 但是也可以人为手工抛出 throw 后面跟一个异常对象。(throw只能在函数内部 属于执行语句)
异常体系结构
Throwable(所有异常的最终父类)

  • Exception(是由虚拟机或Java throw抛出的一般性错误(能够有解决方案——程序不一定终止!)
    1.Exception及其其他子类(编译时异常)
    1)是指在程序编译的期间发现的一些可能出错的问题 可以被提前预知 做好解决方案
    2.RuntimeException(运行时异常)
    1)是指在程序运行的期间发现的一些可能出错的问题 但是不能被提前预知 没有解决方案(也不是绝对的)
  • Error(是由虚拟机直接抛出的JAVA严重性错误(绝对没有解决方案——程序终止!))

定义异常(类)

按照项目实际需求 定义出所需的异常类

  • 继承自Throwable
  • 继承自Exception
  • 一般不推荐继承自Error

异常错误性质: Error>RuntimeException>Exception
对于Exception的两种解决方案

  • throws关键字 声明
    1)通过声明提前告诉调用者该函数可能会存在问题
    2)如果问题发生,首先会反馈给函数自身,函数自身再将该问题反馈给调用者,由调用者自行解决
    3)对于该函数而言 确实是一种解决方案 但是并没有在函数内部实质解决(实际上就是甩锅)
    4)throws 只能在函数定义之后 函数体之前
    5)throws 后面只能跟异常类 可以多个类名 类名之间,分隔
  • try-catch-finally 捕获
    1)先尝试运行某段代码try
    2)如果该段代码出现问题,则立马解决catch
    3)无论代码是否出错 将都会执行的代码放入finally

try-catch-finally有return运行可能出现的情况

  • 没有异常的情况下 try里有return try->finally
  • 没有异常的情况下 catch里有return try->finally->之后
  • 没有异常的情况下 finally里有return try->finally 一旦有 之后则不执行
  • 有异常的情况下 try里有return try-catch-finally->之后
  • 有异常的情况下 catch里有return try->catch->finally
  • 有异常的情况下 finally里有return try-catch-finally 一旦有 之后则不执有
  • 没异常的情况下 try catch里有return try->finally之后不执行
  • 有异常的情况下 try->catch->finally
  • (不推荐try->catch->finally里面写return)

I/O流

I/O流就是输入输出流,即(Input、Output)
输入输出仅针对于内存而言

分类

  • 按流向分
    1)输入流
    2)输出流
  • 按类型分
    1)字节流
    2)字符流(字节流+码表)

IO流四大基类(IO体系中的四个父类)

  • InputStream(字节输入流)
    1)FileInputStream
    2)BufferedInputStream
  • OutputStream(字节输出流)
    1)FileOutputStream
    2)BufferedOutputStream
  • Reader(字符输入流)
    1)InputStreamReader(转换流==字节进来–>字符进来)
    2)BufferedReader
  • Writer(字符输出流)
    1)OutputStreamWriter(转换流==字符出去–>字节出去)
    2)BufferedWriter

玩转IO流 考虑事项

  • 1.数据源 目的地
  • 2.字节流 字符流
  • 3.是否需要转换流
  • 4.是否需要高效(Buffered)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值