异常发生的原因有很多,通常包含以下几大类:
使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。
try/catch代码块中的代码称为保护代码。
Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。
下面举个例子:
一个try块后面跟了多个catch块:抛出的异常会依次跟catch块中的异常类型进行匹配
like this:
可以在 try 语句后面添加任意数量的 catch 块。
如果保护代码中发生异常,异常被抛给第一个 catch 块。
如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。
如果不匹配,它会被传递给第二个 catch 块。
如此,直到异常被捕获或者通过所有的 catch 块。
注:
(1)throw?关键字用于在当前方法中抛出一个异常。throws?关键字用于在方法声明中指定该方法可能抛出的异常。
throws关键字可以同时抛出多个异常
(2)finally关键字
finally 关键字用来创建在 try 代码块后面执行的代码块。
无论是否发生异常,finally 代码块中的代码总会被执行。
在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。
finally 代码块出现在 catch 代码块最后。在try块中执行return语句时, finally块 中的代码仍然会被执行。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
Java 的控制台输入由 System.in 完成。
为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。这样我们就可以随时随地得到控制台输入(虽然scanner也可以)
补充:BufferedReader 的read()函数是从流中读取一个字符,readline函数是读取一行字符
这个大家应该都很熟悉了,不就System.out,println()吗。
大家有没有想过这几个字都是什么呢?
System就不多说了,Java.lang中的静态类
out:? JAVA .lang 包中的一个 PrintStream变量,继承于OutputStream
println : IO包中的一个函数
区分下Writer 和OutputStream以及Reader和InputStream
当数据量增大时三者效率,依次增高。但是注意要提前设置JVM的内存较大。否则BufferWriter的效率会因为内存不足受到较大影响。
???????
接着是BufferedOutputStream。BufferedOutputStream继承于FilterOutputStream。所以它喊FileOutputStream应该是喊“叔叔”的
新建对象的话,如果去直接new一个“爷爷”对象的话,需要重写“爷爷”的方法。但是借他叔的属性的话就不算继承?就不需要重写方法了???(这一段还不是很懂)
最后是DataOutputStream,
这个跟BufferedOutputStream是好兄弟,但是他实现了dataOutout的接口
PrintWriter(继承于Writer)(这个到第十一章再讲)
注意,这里可以直接对 file文件进行排序,使用 Array.sort,比较器使用Collections.Order();
本篇文章参考:(1)菜鸟教程;
? ? ? ? ? ? ? ? ? ? ? ? ? (2)课程PPT