"catch" 구문은 rethrow 이상의 역할을 해야합니다

 

포착한 예외를 rethrow하기만 하는 catch 구문은, catch를 생략하고 자동으로 bubble up 하는 것과 같은 효과가 있지만, 코드만 더 많아지고 maintainer가 ‘뭐지…?’라는 생각만 들게합니다

이러한 구문들은 제거되거나, 구문을 사용할만한 이유가 포함된, 적절한 논리가 들어가야합니다.

규칙을 어긴 코드

public String readFile(File f) {
  StringBuilder sb = new StringBuilder();
  try {
    FileReader fileReader = new FileReader(fileName);
    BufferedReader bufferedReader = new BufferedReader(fileReader);

    while((line = bufferedReader.readLine()) != null) {
      //...
  }
  catch (IOException e) {  // 규칙을 어긴 코드
    throw e;
  }
  return sb.toString();
}

규칙을 준수한 해결책

public String readFile(File f) {
  StringBuilder sb = new StringBuilder();
  try {
    FileReader fileReader = new FileReader(fileName);
    BufferedReader bufferedReader = new BufferedReader(fileReader);

    while((line = bufferedReader.readLine()) != null) {
      //...
  }
  catch (IOException e) {
    logger.LogError(e);
    throw e;
  }
  return sb.toString();
}

또는

public String readFile(File f) throws IOException {
  StringBuilder sb = new StringBuilder();
  FileReader fileReader = new FileReader(fileName);
  BufferedReader bufferedReader = new BufferedReader(fileReader);

  while((line = bufferedReader.readLine()) != null) {
    //...

  return sb.toString();
}

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project