IO流:
I Input输入<br /> O Output输出
IO的前提:
**异常**
异常:
java程序运行的一切不正常情况<br /> 异常也算是问题的一种, java把遇到的各种问题抽取一下密封成类来描述,用对象去表示
异常分类:
小强要骑自行车出门自驾游
可能遇到的问题:<br /> 三种:<br /> 骑到一半发现车胎没气了,漏气!!! 出门前就应该检查的问题
小强正在路上美滋滋骑行,骑到一半看到路边石子觉得很有意思,<br /> 用车压过去,结果导致车翻,摔跤<br /> 骑行过程中脑残问题 no zuo no die
骑到半山坡,遇到山体滑坡,没有办法继续前行,只能掉头回家<br /> 没有办法去做针对性处理
程序中异常也分三类
1.Throwable java中所有的异常的超类(顶级)
2.异常Exception
①.运行时异常(RuntimeException以及所有子类)(也叫非受检异常)
只有程序运行过程当中发生的异常情况
NullPointerException 空指针异常<br /> ArrayIndexOutOfBoundsException 数组索引越界异常<br /> StringIndexOutOfBoundsException 字符串索引越界异常<br /> ClassCastException 类型转换异常<br /> ArithmeticException 除数为0异常<br /> NumberFormatException 数字格式化异常<br /> InputMismatchException 输入不匹配异常<br /> ** ②. 编译器异常(非RuntimeException以及所有子的所有异常)\**<br />**(也叫非受检异常)**<br /> 在编译期要对程序代码做预处理 必须做预处理<br /> 预处理两种方式
throws 抛出
针对出现的问题做一个忽略操作,抛出给下一个调用者<br /> 格式: 在当前参数括号和方法体大括号之间 用throws关键字<br /> 后面紧跟着 出现的异常类名,把该异常抛出给方法,下一个调用者来处理<br /> 抛出并没有处理问题或者当前不会处理,交给别人,保证了当前代码格式的好看<br /> 在不断抛出以后,直到main 抛出给jvm<br /> 而jvm不会处理问题,出现问题程序直接报错终止
try catch 处理
在不断抛出过程中,一旦做了try catch预处理,则后面的调用不需要在处理问题<br /> try{<br /> 尝试执行的代码<br /> }catch(捕获到的异常对象){<br /> 针对出现的异常做针对性处理<br /> e.printStackTrace();<br /> jvm默认处理 e捕获到的异常对象 打印异常堆栈序列<br /> }finally{<br /> 无论如何都会执行的代码<br /> }<br /> try catch会保证后面的程序继续运行<br /> 注意点:<br /> 在try或者catch里面声明的变量只能在里面用,出了大括号就用不到
3.错误(Error)没有办法做针对性处理的
类名都是以Error结尾的<br /> OutOfMemoryError 超出内存异常
StackOverflowError 栈溢出异常