Java的异常小结
主要是举个例子说明一下什么用throws,什么时候用try-catch。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
File dir = new File(".");
FileFilter dirFilter = new FileFilter() {
public boolean accept(File pathname) {
return pathname.isFile();
}
};
for (File file: dir.listFiles(dirFilter)) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
print(reader);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
private static void print(BufferedReader reader) throws IOException {
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
这是用来输出当前目录下的所有文件的一个小程序。
print函数使用throws是因为在这个函数中如果发生了异常,那么这么函数就无法再执行下去了。
而在main函数的循环中,因为在处理一个文件时发生了异常(可能的原因有很多啊,比如突然被人删除了),我们仍然可以跳过这个文件继续执行,因此使用了try-catch。
总结一下,当在函数中自己可以处理异常时,那么就使用try-catch。如果无法处理,那么就用throws,让外层的函数去处理。
相关文档:
InputStream is = new FileInputStream(filename);//通过文件名称读取
或
InputStream is =new ByteArrayInputStream(byte[] a);//通过文件的字节数组读取
BufferedImage buff = ImageIO.read(is);
buff.getWidth(); //得到图片的宽度
buff.getHeight(); //得到图片的高度
is.close(); //关闭Stream ......
编译并运行下面的程序,其结果是什么?
public class MyClass {
public static void main(String[] args) {
String str1 = "str1";
String str2 = "str2";
String str3 = "str3";
str1.concat(str2);
System.out.println(str3.concat(str1));
}
}
请选择正确的答案。
......
很多developer知道java也可能memory leak,关于这个主题已经有很多文章了。我这里只想分享一下自己的memory leak的经验。
说明一下这里指的memory leak是程序不及时释放heap导致的OutOfMemoryError.
首先一种情况是collection或者是map一直被put数据,没有机会remove,导致OutOfMemoryError。尤其是当collection或者是map ......
1、JavaSE的学习书籍
英文名:《Thinking in Java》
中文名:《Java编程思想》
图 片:
作 者:Bruce Eckel
出版社:机械工业出版社
阅读方法:这本书并不适合一点基础都没有的同学进行阅读,强烈建议学的JavaSE。
然后可以直接学习JavaWEB的内容了,但是如果想备一本书在手边备查的 ......