try-with-resources는
try에 자원 객체를 전달하면, try 코드 블록이 끝나면 자동으로 자원을 종료해주는 기능이다.
// 기존 코드
try{
Stream<String> lineStream =
Files.lines(Paths.get("file.txt"),
StandardCharsets.UTF_8);
System.out.println(Arrays.toString(lineStream.toArray()));
}catch (IOException e){
e.printStackTrace();
}
// try - with - resources
try( Stream<String> lineStream = Files.lines(Paths.get("file.txt"),StandardCharsets.UTF_8)) {
System.out.println(Arrays.toString(lineStream.toArray()));
}catch (IOException e){
e.printStackTrace();
}
그리고 e.printStackTrace는 리소스 비용이 비싸다
ex) e.printStackTrace
java.nio.file.NoSuchFileException: file.txt
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230)
at java.nio.file.Files.newByteChannel(Files.java:361)
at java.nio.file.Files.newByteChannel(Files.java:407)
at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
at java.nio.file.Files.newInputStream(Files.java:152)
at java.nio.file.Files.newBufferedReader(Files.java:2784)
at java.nio.file.Files.lines(Files.java:3744)
at streamEx.Stream3.main(Stream3.java:34)
//수정 코드
try( Stream<String> lineStream = Files.lines(Paths.get("file.txt"),StandardCharsets.UTF_8)) {
System.out.println(Arrays.toString(lineStream.toArray()));
}catch (IOException e){
log.error("Error : {} ",e.getStackTrace()[0]); <-- getStackTrace를 사용하자
}
ex) e.getStackTrace
streamEx.Stream3.main(Stream3.java:34)
try 안에서만 변수 사용이 가능하다 지역 변수임!
'Java' 카테고리의 다른 글
[Java] 클라이언트 ip 주소가져오기 (0) | 2023.12.01 |
---|---|
[Java] 중첩 클래스 (0) | 2023.11.01 |
[Java] 주민등록번호 유효성 체크 (1) | 2023.10.17 |
[Java]SHA-256 (0) | 2023.10.12 |
[Java] 만 나이 계산용 (0) | 2023.08.30 |