본문 바로가기

WEB개발

[Java] 참고

 

1. try catch finally 순서

 

try {
	// 프로그램 실행 로직
} catch(Exception e) {
	// 예외발생 시의 로직
} finally {
}



1. 기본 실행 순서:

try문에서 예외가 발생하지 않았으면 catch문은 생략되어 try문이 실행된 이후에 finally문이 실행되고, (try > finally)
try문에서 예외가 발생했으면 try문, catch문 순서로 실행된 이후에 finally문이 실행된다. (try > catch > finally)

try문이나 catch문 안에 return문 또는 throw문이 있다면, 그 return문 또는 throw문 전까지 로직이 실행된 후 finally문이 실행되고 나서 그 return문 또는 throw문이 실행된다  (try or catch > return or throw직전 > finally  >  return or throw )



2. catch문과 finally문 안에 throw문이 있는 경우:   (try > finally)


try문에서 예외가 발생했으면, finally문 안에 있는 throw문이 먼저 실행되기 때문에 catch문 안에 있는 throw문은 실행되지 않는다.





 

 


2. final 상수 수정 문제


자바 파일은 컴파일 할 때 참조하는 상수를 바로 값으로 교체합니다.

따라서 참조된 상수를 변경해줘도 해당 상수를 참조하는 자바파일은 이미 이전 값으로 컴파일 되어있기 때문에
수정이 되질 않는다.

따라서 상수가 선언되어있는 자바 파일뿐 아니라 참조하는 자바 파일도 컴파일하여 변경해야 한다.

 

 

 


 

3.  Wrapper Class의 new

 

Java 9부터 Double, Integer, Long 등과 같은 래퍼 클래스에 대한 new 연산자의 사용이 권장되지 않습니다.

대신에 해당 클래스들은 래퍼 클래스의 정적 팩토리 메서드를 사용하여 생성해야 합니다. 이 방식은 Java 9에서 소개된 래퍼 클래스의 팩토리 메서드를 활용합니다. 이러한 팩토리 메서드는 더욱 명확하고, 편리하며, 형 안전성을 제공합니다.

 

따라서 new Double() 대신에 Double.valueOf() 또는 Double.parseDouble()를 사용할 수 있습니다. 이는 값의 문자열 표현을 이용하여 Double 객체를 생성합니다.

 

// 값을 직접 전달하여 Double 객체 생성 
Double d1 = Double.valueOf(3.14); 
// 문자열을 파싱하여 Double 객체 생성 
Double d2 = Double.parseDouble("3.14");

 

 

따라서 Java 17에서도 이러한 방법을 사용하여 Double 객체를 생성할 수 있습니다. 만약 코드가 new Double()로 이루어져 있다면 이를 valueOf()나 parseDouble() 메서드를 사용하도록 수정해야 합니다.

 
 

 

 
 

https://soohyeon317.tistory.com/entry/trycatchfinally-실행-순서