비디오: 마인크래프트 서버강좌 #12편 :: 자주하는 질문과 오류들 2024
두 개의 서로 다른 파일 또는
Scanner
와 디스크에서 입력을받는 Java 프로그램을 상상해보십시오. 파일. 제대로 정리하려면
닫기
절을
finally
절에 넣습니다.
import java. io. 파일;
import java. io. IOException;
import java. util. 스캐너;
public class Main {
public static void main (String args []) {
스캐너 scan1 = null;
스캐너 scan2 = null;
시도 {
scan1 = 새 스캐너 (새 파일 ("File1. txt"));
scan2 = 새 스캐너 (새 파일 ("File2. txt"));
// 유용한 일들
} catch (IOException e) {
// 죄송합니다!
} finally {
scan1. 닫기();
스캔 2. 닫기();
시스템. 아웃. println ("완료!");
}
}
}
이론적으로 컴퓨터는 항상
scan1을 실행합니다. close ()
및
scan2. close ()
try
절을 실행하는 동안 무엇이 잘못 될지라도. 그러나 그것은 이론입니다. 실제로, 다른 프로그래머 (물론 아닙니다)는
try
절의 중간에서
scan1
를 닫음으로써 코드를 수정할 수 있습니다.
scan1 = 새 스캐너 (새 파일 ("File1. txt"));
scan2 = 새 스캐너 (새 파일 ("File2. txt"));
// 유용한 정보를 제공하지만 …
scan1. 닫기();
scan1 = null;
} catch (IOException e) {
// 죄송합니다!
} finally {
scan1. 닫기();
스캔 2. 닫기();
시스템. 아웃. println ("완료!");
}
finally
절에서
scan1
의 값은
null
입니다.
scan1에 대한 호출입니다. close ()
가 실패하기 때문에 프로그램은
scan2 호출에 도달하기 전에
NullPointerException
를 throw하고 실행을 중지합니다. close ()
. 최악의 상황에서는
scan2
가 닫히지 않고 프로그램에
File2가 있습니다. txt
는 잠겨있어 다른 프로그램이 파일을 사용할 수 없습니다.
try
try 구문의 작성이 복잡해집니다.
catch
절 및 모든 종류의 미친 조합 내에서
try
문을 만들 수 있습니다. 그러나 Java는 문제를 해결할 수있는 더 좋은 방법을 가지고 있습니다. Java 7 (및 이후 Java 버전)에서는
try-with-resources 문을 작성할 수 있습니다.
이 코드는 방법을 보여줍니다.
import java. util. 스캐너;
public class NewMain { public static void main (String args []) {
시도 (스캐너 scan1 = 새 스캐너 (새 파일 ("File1.새로운 스캐너 (새 파일 ("File2. txt"))) { // 유용한 자료
} catch (IOException e) {
// 죄송합니다.
scan1
및
의 선언은 다음과 같이 정의됩니다.
scan1
scan2
는
try
라는 단어 다음에 괄호 안에 표시되며 괄호 안에있는 선언은
에서
scan1
및
scan2
> try
절 하나의
try
절 괄호 안에 여러 리소스를 선언 할 수 있으며,
try
절의 명령문을 실행하면 Java가 자동으로 모든 리소스를 닫습니다. 원한다면
catch
절과
finally
절을 추가하면 모든 종류의 리소스 (파일, 데이터베이스, 서버와의 연결 등)에 액세스 할 수 있고 Java는 연결을 자동으로 끊습니다.
수명이 좋습니다.