J2se(10)
------流 和异常
流
什么是流?
答:输入输出设备与内存之间传递的一组有序的数据序列,就称为:"流"
流的分类方式有三种:
按方向: 输入流与输出流
按处理的数据单位: 字节流与字符流
按操作的对象: 节点流与处理流
------------------------------------------------------------
输入流: 向内存写数据的流,就称为:输入流 (Input****,Reader*****)
输出流: 把内存中的数据向外输出的流,就称为:输出流(Output****, Writer****)
字节流: 每一次读取一个字节的流,就称为"字节流" (*****Stream)
字符流: 每一次读取一个字符为单位的流,就称为:字符流 (****Reader, ****Writer)
节点流: 直接对文件操作的流,就称为:节点流 (括号中的参数如果是文件或者路径)
处理流: 对其他流对象操作的流,就称为:处理流(括号中的参数如果是其他的流)
-----------------------------------------------------------
InputStream:它是一个抽象类,它也所有输入字节流的基类
OutputStream:它是一个抽象类,它也是所有输出字节流的基类
Reader: 它是一个抽象类,它也是所有输入字符流的基类
Writer: 它是一个抽象类,它也是所有输出字符流的基类
********************************************************
什么时候用字符流,什么时候用字节流?
答: 一般读文本的时候,使用字符流,会更高效,在操作非文本的时候,使用字节流性能会更好
--------------------------------------------------
异常
------------------------------------------------
错误:(程序中错误分成两种:)
1、编译错误 (语法错误)
2、程序运行过程中产生的错误-------异常(Exception)
什么是异常?
答:异常是程序在正常的执行过程中,产生的不正常的事件
异常发生以后,程序的正常执行流程就会被中断
针对程序中的异常的解决方案,就称为“异常处理机制”
程序中的异常处理,主要涉及五个关键字:
try....catch...finally
throw....throws
常见异常的类型:
ArithmeticException: 算术运算异常 (除数为0)
如何处理异常
try{
把可能会出错的代码,放在此处
}catch(异常的类型){
在这里可以对异常信息进处理
}
一般把可能会出错误的代码,放在try块写,如果程序执行过程中,没有任何错误,就会正常的执行下去,如果产生异常,系统会自动把它与指定的异常类型做比较,如果比较上,就会执行catch块的代码,处理完成以后,程序是可以正常的执行下去
如果程序执行过程中,没有错误catch的代码,不会运行,如果产生错误才会执行catch块的代码
程序正常执行的过程中,是不会进入catch块,只有出现了异常情况,才会进入catch块
try{
代码...
}catch(第一种异常类型 e){
}catch(第二种异常类型 e){
}catch(第三种异常类型 e){
}catch(Exception e){
}
如果在程序中,做了多个异常捕获,并且也捕获了Exception,必须保证,它是最后一位
常见异常:
--不受检查的异常
NullPointerException (空指针异常) -------还没有实例化,分配内存存储空间
ArrayIndexOutOfBoundsException (数组下标越界)
ArithmeticException(数学运算异常)---除数为0
NumberFormatException(数字格式异常) ----把不能转换成数字的内容,转换成数字
--受检查的异常 (必须强制性进行异常处理,否则,代码不允许运行)
ClassNotFoundException----类找不到异常(驱动包没有导入)
SQLException ----数据库异常
NotFoundException---文件找不到
IOException----IO流异常
异常又可以分为两种:
1、不受检查的异常
(这一类型的异常不强制性要求用户try...catch)
2、受检查的异常
(这一类型的异常,不管用户写的代码写的对不对,都必须try..catch否则代码不允许运行)
try{
}catch(){
这里是有错误的时候,才会执行代码
}finally{
不管任何情况下,写在此处的代码一定会运行
}
try..catch.finally
自己处理异常
throws throw 程序执行过程中,有异常自己不处理,而是抛出异常
throws 用于声明方法要抛出异常的一个关键字
throw 用于手动抛异常的关键字
异常用的几个关键字:
try...catch..finally
throw ---抛异常的关键字
throws ---声明方法要抛异常
所有异常的基类是-----------Exception
异常分为: 受检查异常与不受检查异常
受检查异常的代码,必须对异常进行处理以后,代码才可以正常运行
Throwsable 下面可以包含 错误与异常
error --错误
Exception ---包含的异常
尽管exception还基类,但是由于所有异常类,都隶属exception,所以,我们认为Exception就是所有异常类的基类