2018-08-09 - Lisa's Code Standard

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

进击的小仙

一、异常日志の一、异常处理

1.1、可以通过预检查规避的运行时异常不要用catch来处理

NullPointExceptionIndexOutOfBoundsException等就不应该要用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();
            }
        }
    }

你可能感兴趣的:(2018-08-09 - Lisa's Code Standard)