Java의 최종 키는 일반적으로 시도 된 후에는 시도 블록에 들어갑니다 설명 할 예 :
public class tryandfinallytest {public static void main (string [] args)은 예외를 던집니다. {int a = testfinally (2) ) {int b = testfinally (1); b); testinally (4); "+b) : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : try scope Whether the program throws an exception or other interruption, the content of finally will be executed switch(i) {case 1 : break; // 프로그램은 정상적으로 종료됩니다 (마지막으로 나오는 경우}}};
실행 결과는 다음과 같습니다
마지막으로 나오면 I = 1 때 2 점이 올 때 I = 1 결과가 정상적으로 반환되면 B : 2 I = 3Break가 반환 될 때 결과가 나옵니다.
결과는 위의 상황이 무엇이든 마침내 블록이 항상 실행된다는 것을 보여줍니다.
다른 언어 모델과 비교할 때, 마지막 키워드는 Java Exception Handling 모델에 가장 잘 추가됩니다. 마지막으로 구조를 통해 예외가 발생하는지 여부에 관계없이 코드가 항상 실행할 수 있습니다. 마지막으로 객체의 내부 상태를 유지하고 비 메모리 자원을 정리하는 데 사용하십시오. 마지막으로 코드가 없으면 혼란 스러울 것입니다. 예를 들어, 다음 코드는 최종적으로 사용하지 않고 무료 비 메모리 리소스에 코드를 작성하는 방법을 보여줍니다.
java.net.*; .crect (); // 다른 코드 ...} catch (ioexception e) {ss.close};
이 코드는 소켓을 생성하고 수락 방법을 호출합니다. 이 방법을 종료하기 전에 자원 취약점을 피하려면이 소켓을 닫아야합니다. 이 작업을 수행하기 위해 우리는 // 2에서 Close를 호출합니다. 이는이 방법의 마지막 진술입니다. 그러나 시도 블록에서 예외가 발생하면 어떻게됩니까? 이 경우 // 2의 긴밀한 호출은 결코 일어나지 않습니다. 따라서이 예외를 포착 하고이 예외를 재발행하기 전에 // 1에서 다른 호출을 삽입해야합니다. 이를 통해 방법을 종료하기 전에 소켓이 닫히도록합니다.
이와 같은 코드를 작성하는 것은 번거롭고 오류가 발생하기 쉬운 것이지만 마지막으로 필수적입니다. 불행히도, 최종 메커니즘이없는 언어에서 프로그래머는 이러한 방식으로 코드를 구성하는 것을 잊어 버릴 수 있습니다. Java의 마지막 조항은이 문제를 해결합니다. 마지막으로, 이전 코드는 다음 형식으로 다시 작성할 수 있습니다.
java.net.*; .accept (); // 다른 코드 ...} 마침내 {ss.close ()};
마지막으로 블록은 시도 블록 내에서 예외가 발행되는지 여부에 관계없이 가까운 메소드가 항상 실행되도록합니다. 따라서 방법을 종료하기 전에 항상 가까운 방법이 호출되도록합니다. 이렇게하면 소켓이 닫히고 자원이 유출되지 않았 음을 확인할 수 있습니다. 이 방법에서는 다른 캐치 블록이 필요하지 않습니다. 캐치 블록은 소켓을 닫기 위해 첫 번째 예제에서 제공됩니다. 이제 마침내 닫힙니다. 캐치 블록을 제공하는 경우 캐치 블록이 완료된 후 마침내 블록의 코드가 실행됩니다.
최종 블록은 시도 또는 시도/캐치 블록과 함께 사용해야합니다. 또한, 마침내 블록을 실행하지 않고 시도 블록을 종료 할 수 없습니다. 마지막으로 블록이 존재하면 항상 실행됩니다. (이 명령문은 해당 관점에서 정확합니다. 최종 블록을 실행하지 않고 시도 블록을 종료 할 수있는 방법이 있습니다. 코드가 System.Exit (0)를 실행하는 경우, Try 내부의 명령문이 실행되지 않고 종료됩니다. 다른 한편으로, 시도 블록을 실행하는 동안 전원을 끄면 마침내 그렇게하지 않습니다.