>Java >java지도 시간 >마지막으로 자바에서

마지막으로 자바에서

WBOY
WBOY원래의
2024-08-30 16:15:28629검색

다음 기사에서는 finally in Java에 대한 개요를 제공합니다. 마지막으로 try 및 catch와 함께 사용되는 코드 블록입니다. 마지막으로 예외 발생 여부에 관계없이 실행되어야 하는 코드 블록을 포함합니다. finally 블록 내부에 작성된 명령문은 try 블록에서 오류가 발생했는지 여부에 관계없이 항상 실행됩니다. 마지막으로, 이 블록은 열린 파일로 인한 메모리 오류나 열린 연결 또는 최대 연결 오류로 인한 데이터베이스 오류가 발생하지 않도록 하는 파일 또는 데이터베이스 연결을 닫는 데 적합합니다. 또한 코드에서 발생하는 모든 오류가 정상적으로 처리되도록 보장합니다.

광고 이 카테고리에서 인기 있는 강좌 재무 모델링 및 가치 평가 - 전문 분야 | 51 코스 시리즈 | 모의고사 30개

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

구문:

try {
//block of code that may cause an exception
}
catch {
//Handling the error occurred in try block
}
finally {
//code that should always execute
}

Java에서 finally는 어떻게 작동하나요?

여기서는 오류를 발생시키거나 오류를 발생시키고 최종적으로 실행을 차단하는 오류 코드를 작성합니다.

코드:

class ExampleFinally
{
public static void main(String args[]) {
try{
int result = 1/0;
System.out.println(result);
catch(ArithmeticException e){
System.out.println("Divide by Zero Error");
}
/* Finally block will always execute
* even when we have created an error
Block */
finally{
System.out.println("Gracefully Handling Error in Finally");
}
System.out.println("Execution complete out of Try Catch Finally block");
}
}

출력:

마지막으로 자바에서

설명:

위 프로그램에서는 이미 숫자를 0에서 나눴습니다.

  • Finally의 오류를 우아하게 처리합니다.

그리고 마지막으로 try catch를 수행한 후 인쇄된 모든 항목 외부에 코드 블록을 작성했습니다.

  • Try Catch finally 블록을 벗어나 실행이 완료되었습니다.

try-catch-finally 블록 내에서 예외가 발생하지 않는 또 다른 예를 살펴보고 무슨 일이 일어나는지 살펴보겠습니다.

코드:

class ExampleFinally
{
public static void main(String args[]) {
try
{  int result = 100/10;
System.out.println(result);
System.out.println("try code block");
}
catch (Exception e)
{
System.out.println("catch code block");
}
finally
{
System.out.println("finally code block");
}
}
}

출력:

마지막으로 자바에서

설명:

위 프로그램에서는 오류가 발생할 수 있는 코드를 작성하지 않았습니다. 코드는 try 블록 내에서 성공적으로 실행되었지만 여전히 finally 블록이 실행되고 내부에 메시지가 인쇄되는 것을 볼 수 있습니다.

  • 마지막으로 코드 블록

마지막으로 Java 프로그램에서의 사용 차단

읽거나 쓰기 위해 파일을 열려면 파일을 연 다음 스트림을 버퍼링해야 하며, 파일 처리, IO 또는 디스크 오류가 발생하지 않도록 열린 파일을 닫아야 합니다.

코드:

import java.io.*;
public class ReadingFromFile
{
public static void main(String[] args)throws Exception
{
FileReader fr = null;
try {
fr = new FileReader("/Users/cdp/Documents/testing/python virtual/java/myfile.txt");<>
System.out.println("Opening the file");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null)
System.out.println(line);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
System.out.println("Closing the file ");
fr.close();
} catch (IOException e) {
System.out.println("unrecoverable Error occurred");
e.printStackTrace();
}
}
System.out.println("Exiting Finally block");
}
}
}

출력(파일이 존재하지 않음):

마지막으로 자바에서

출력(파일 있음):

마지막으로 자바에서

위의 예에서는 파일을 열고 파일 경로에서 버퍼로 읽어들이려고 했습니다. 파일이 존재하고 파일을 읽을 수 있으면 오류가 발생하지 않으며 null이 아닌 경우 finally 블록에서 파일 버퍼가 닫힙니다. 파일을 읽는 데 오류가 발생하더라도 일부 권한으로 인해 최종적으로 차단하면 파일이 닫힙니다.

의미

  • 마지막으로 블록은 항상 try 블록과 연결되어야 합니다. try 블록 없이는 use finally 블록을 작성할 수 없습니다. finally 블록 안에 작성한 명령문은 오류 발생 여부에 관계없이 항상 try 블록 코드에 의존하지 않고 실행됩니다.
  • 마지막으로 해당 블록은 필수 블록이 아닙니다. finally 블록 없이 try 및 catch 블록을 작성할 수 있습니다. 입력에 버그가 있는 모든 사용자 입력에 대해 오류를 포착하고 싶다고 가정해 보겠습니다.
  • 아직 에러가 발생하지 않은 경우 최종적으로 블록이 실행됩니다. 오류가 있으면 첫 번째 catch 블록이 실행되고 마지막으로 실행됩니다.
  • 모든 예외는 finally 블록에서 동일한 동작을 갖습니다. 모든 예외에 대해 블록이 정상적으로 실행됩니다.
  • 마지막으로 try 블록에 break, return, continue 문이 있어도 블록이 실행됩니다.

마침내 실행되지 않는 경우는 언제인가요?

지금까지 우리는 언제, 어떻게 최종 블록이 실행되는지 살펴보았습니다.

그러나 최종적으로 블록이 실행되지 않는 특정 시나리오가 있을 수 있습니다.

  • There could be a thread getting executed; it is most likely to be the main thread where program execution is happening, and abruptly it dies, then the finally block won’t be getting executed.
  • If in the try or catch block we have used System class with the exit method that is System.exit(), then the whole system would exit, and no control will be transferred to the next block of code.
  • If finally only throws an exception, then the program would not exit gracefully but exit abruptly.

Example:

import java.io.*;
public class ReadingFromFile
{
public static void main(String[] args)throws Exception
{
FileReader fr = null;
try {
fr = new FileReader("/Users/cdp/Documents/testing/python virtual/java/myfile.txt");
System.out.println("Opening the file");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null)
System.out.println(line);
System.exit(0);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
System.out.println("Closing the file ");
fr.close();
} catch (IOException e) {
System.out.println("unrecoverable Error occurred");
e.printStackTrace();
}
}
System.out.println("Exiting Finally block");
}
}
}

Output:

마지막으로 자바에서

In the above example, we have used System.exit in the try block after reading the file, and it gets executed. If the System.exit gets executed without any exception, then there won’t be any control transfer to the finally block. However, in the case of an exception occuring before the System.exit, then finally block would surely get executed.

Conclusion

In the conclusion we can reach, it can finally play a very important role in gracefully exiting the program in case of errors. Finally, the block is important when you open a connection or buffered something, and it’s always important to close the connection or file opened. Finally, the block would even execute if there is an error or no error in the try block code. Finally, blocks are not mandatory but are useful in some situations.

위 내용은 마지막으로 자바에서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Java의 이벤트 처리다음 기사:Java의 이벤트 처리