目录:
1、异常日志の一、异常处理

一、异常日志の一、异常处理
1.1、可以通过预检查规避的运行时异常不要用catch来处理
如NullPointException
、IndexOutOfBoundsException
等就不应该要用catch来处理。
空指针异常的处理:
if(obj != null){...}
数组角标越界异常的处理:
if(arr.size() !=0&&arr.size>index){
b = arr[index];
}
而想无法预检查到的,比如说解析字符串中的数字时,就可以用catch来做处理啦。
1.2、异常不要用来做流程控制、条件控制
1.3、catch尽量分清稳定代码和非稳定代码,非稳定代码在catch是尽可能区分异常类型,再做对应处理
- 稳定代码是肯定不会出错的代码。
- 不要对大段的代码进行try..catch
1.4、捕获异常是为了处理他, 一定要对捕获的异常进行处理
如果不想处理异常,要讲异常抛出,给最外层的调用者进行处理。最后将异常转化为用户可理解的提示
1.5、try处理事务代码,需要的话,捕获异常后要注意手动回滚事务
1.6、finally必须对资源对象、流对象进行关闭,有异常也要try...catch
了解下try-with-resources
private static void printFileContent() throws IOException {
try (FileInputStream inputStream = new FileInputStream("file.txt")) {
int data = inputStream.read();//读一个字符
while (data != -1) {
System.out.println((char) data);
data = inputStream.read();
}
}
}
public static void printFileContentWithBuffered() throws IOException {
try (FileInputStream inputStream = new FileInputStream("file.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
String dataLine = reader.readLine();
int data = bufferedInputStream.read();
while (data!=-1){
System.out.println((char)data);
data = bufferedInputStream.read();
System.out.println(dataLine);
dataLine = reader.readLine();
}
}
}
网友评论