본문 바로가기
Java/정리

[Java] 예외처리_BufferedReader사용

by 콧등치기국수 2021. 5. 25.

BufferedReader 클래스 버퍼를 이용하는 대표적인 I/O(Input/Output) 클래스다.

입력된 데이터를 바로 전달하는 것이 아닌, 버퍼에 저장해두었다가 전달하는 방법이다.

하나하나씩 전달하는 것이 아니라 모아서 한번에 전달하기 때문에 속도가 빠르다.

 

BufferedReader 예외처리
public void practice2() {
    BufferedReader br = null;
        
    br = new BufferedReader(new FileReader(""));
    br.close();
}

위와 같이 작성을 하면 2군데에서 빨간 줄이 그어지면서 예외처리를 하라는 메시지가 뜬다.

 

1) IOExeption -> br.close();

BufferedWriter 객체는 반드시 flush() 또는 close()를 해서 스트림을 끝내야 하므로 꼭 적어줘야 한다.

BufferedReader와 BufferedWriter 클래스의 메소드들은 입출력에러가 발생할 경우 자체적으로 IOException을 던지도록 정의되어있다. 그러므로 이 메소드들을 사용할 때 반드시 예외처리를 해주어야 한다. 

 

2) FileNotFoundException -> new FileReader("")

읽어오는 파일이 없으므로 파일을 찾을 수 없다는 예외를 처리해주어야 한다.

 

 

 

public void practice2() {
	BufferedReader br = null;
	try {
		br = new BufferedReader(new FileReader(""));
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} finally {
    
    		try {
			br.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("꼭 출력")
	}
}

이로써 Checked Exception은 해결이 되었는데 이 상태로 실행을 하면
br.close()에서 NullPointerException이 발생한다.

br 이 null로 정의되어 있기때문에 null에서 close메소드를 호출하려고 하는 것이므로 nullpointer가 발생하는 것이다.

 

따라서 아래와 같이 if문으로 코드를 수정하여 해결할 수 있다.

 

 

IOExeption , FileNotFoundException , NullPointerException  -> try ~ catch문, If문 으로 예외처리
public void practice2() {
	BufferedReader br = null;
	try {
		br = new BufferedReader(new FileReader(""));
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} finally {
    
    		try {
            		if(br != null)br.close();
			// br.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("꼭 출력")
	}
}

1) if ( br != null) br.close();

null을 참조하는 레퍼런스변수 br에 close()를 호출하여 NullPointerException이 발생했고, if문으로 처리할 수 있다.

 

 

 

 

 

 

출처 및 참고: 

https://chloe-ki.tistory.com/entry/java-bufferedreader-and-bufferedwriter-methods-and-exception-handling

https://snupi.tistory.com/48 [SNUPI]

'Java > 정리' 카테고리의 다른 글

[Java] 다형성  (0) 2021.05.25
[Java] 예외처리_try with resource  (0) 2021.05.25
[Java] 상속(Inheritance)  (0) 2021.05.19
[Java] 문자열 compareTo()_문자열비교메소드  (0) 2021.05.17
[Java] 객체  (0) 2021.05.14