개인 재정 Java try 문을 리소스 - 인형과 함께 사용하는 방법

Java try 문을 리소스 - 인형과 함께 사용하는 방법

비디오: 마인크래프트 서버강좌 #12편 :: 자주하는 질문과 오류들 2024

비디오: 마인크래프트 서버강좌 #12편 :: 자주하는 질문과 오류들 2024
Anonim

두 개의 서로 다른 파일 또는 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. io. 파일;

import java. io. IOException;

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는 연결을 자동으로 끊습니다. 수명이 좋습니다.

Java try 문을 리소스 - 인형과 함께 사용하는 방법

편집자의 선택

Photoshop Elements 11 - Stone

Photoshop Elements 11 - Stone

을 사용하여 Stone Out을 조각하는 방법 Photoshop Elements 11의 도구를 입력하여 텍스트와 같은 모양의 선택 영역을 만든 다음 이미지 자체를 해당 유형의 채우기로 사용합니다. 예를 들어 꽃 테마 웹 페이지를 만드는 경우 꽃 그림을 텍스트 채우기로 사용할 수 있습니다. 유형 선택을 사용하면 모든 부분을 잘라낼 수 있습니다.

Photoshop Elements 9에서 여러 파일을 일괄 처리하는 방법 - 여러 개의 인형이있는 경우

Photoshop Elements 9에서 여러 파일을 일괄 처리하는 방법 - 여러 개의 인형이있는 경우

여러 파일에 공통적으로 적용 할 편집 기능을 사용하면 Photoshop Elements에서 이러한 변경 사항을 일괄 적으로 처리 할 수 ​​있습니다. 단일 메뉴 명령을 사용하여 파일 형식을 변경하고 파일 속성을 변경하고 공통 파일 기본 이름을 추가 할 수 있습니다. 파일 이름 바꾸기는 내보내기 명령의 일부일 수도 있고 사용할 수도 있습니다.

편집자의 선택

승마 2012 런던 하계 올림픽 - 인형

승마 2012 런던 하계 올림픽 - 인형

승마 (말의 화려한 이름) 경쟁 런던 2012 하계 올림픽은 조련사, 이벤트 및 점프의 세 가지 분야로 구성됩니다. 각 분야는 팀과 개인 메달을위한 기회를 제공합니다. 대회는 7 월 28 일부터 31 일까지 개최됩니다. 조련사 경연 대회는 8 월 2 일부터 9 일까지 개최됩니다. 점프 대회는 ...

동계 올림픽에서의 자유형 스키 - 인형

동계 올림픽에서의 자유형 스키 - 인형

프리 스타일 스키는 동계 올림픽의 X 게임 이벤트 중 하나입니다. . 자유형 스키에서는 경쟁자가 언덕 꼭대기에서 바닥까지 다양한 행사를 수행합니다. 프리 스타일 스키는 기술 스키의 가장 중요한 부분을 차지하며 스노우 보드에서 트릭을 만들어내는 기술과 결합되어 있습니다.

필드 2012 런던 하계 올림픽의 이벤트 - 인형

필드 2012 런던 하계 올림픽의 이벤트 - 인형

스프린트, 릴레이 및 도로 경주 이외에도 2012 런던 하계 올림픽 육상 경기에는 점프 및 던지기 경기가 포함됩니다. 남자와 여자는 높은 점프, 긴 점프, 트리플 점프, 장대 높이뛰기 등의 4 가지 점프 이벤트와 총구, 원반, 창 던지기 및 망치와 같은 네 가지 투구 이벤트에서 경쟁합니다. 필드 이벤트 ...

편집자의 선택

Excel의 유용한 범위 객체 메소드 2016 VBA 프로그래밍 - VBA 메소드가 수행하는

Excel의 유용한 범위 객체 메소드 2016 VBA 프로그래밍 - VBA 메소드가 수행하는

엑셀 2016의 액션. Range 객체는 수십 개의 메소드를 가지고 있지만, 이들 중 대부분은 필요하지 않습니다. 여기서는 가장 일반적으로 사용되는 Range 객체 메소드를 찾습니다. Select 메서드 Select 메서드를 사용하여 셀 범위를 선택합니다. 다음 문은 ...

시나리오 관리자를 사용하여 대출 계산 모델링 방법 - 더미

시나리오 관리자를 사용하여 대출 계산 모델링 방법 - 더미

시나리오 관리자는 목표 탐색 데이터 탭의 가정 분석 섹션에 데이터 테이블이 있습니다. 다른 유용한 도구와 함께 그룹화하면 시나리오 관리자가 중요한 도구임을 믿게 될 것입니다. 그러나 유용한 이름과 좋은 회사가 있음에도 불구하고 ...

더 나은보고 모델을 위해 Power Query와 Power Pivot을 함께 사용 - Power Pivot을 사용하여 더미

더 나은보고 모델을 위해 Power Query와 Power Pivot을 함께 사용 - Power Pivot을 사용하여 더미

Power Query를 함께 사용하면 관리 및 유지 보수가 쉬운보고 모델을 만들 수 있습니다. 보고 모델은보고 메커니즘이 구축되는 기초를 제공합니다. 데이터를 가져오고, 변환하고, 모양을 만들고, 집계하는보고 프로세스를 작성하면 본질적으로보고 모델을 구축하게됩니다. 잘못 작성하는 중 ...