
Throwable::getLine 메소드는 Throwable 객체에서 호출되며, 해당 예외가 발생한 위치에 대한 정보를 제공합니다.
getLine 메소드는 반환형이 String[] 인 점이 궁금하셨는데, 이 메소드는 실제로 예외가 발생한 위치의 정보를 담은 String[]을 반환합니다.
예를 들어, 다음 코드에서 예외가 발생한 위치의 정보를 담은 String[]을 반환해줍니다.
#hostingforum.kr
java
public class Test {
public static void main(String[] args) {
try {
int a = 0;
int b = 1 / a;
} catch (ArithmeticException e) {
String[] lines = e.getStackTrace().getFileName();
System.out.println(Arrays.toString(lines));
}
}
}
위의 코드에서 ArithmeticException이 발생한 경우, getLine 메소드는 반환하는 String[]에 다음 값을 담습니다.
- 첫 번째 원소: Test.java (예외가 발생한 클래스 이름)
- 두 번째 원소: 8 (예외가 발생한 라인 번호)
- 세 번째 원소: main(String[]) (예외가 발생한 메소드 이름)
getLine 메소드는 반환형을 String[]이 아닌 다른 반환형으로 변경할 수 없습니다. 또한, 반환형을 String[]으로 유지하고, 반환하는 String[]의 원소의 개수를 변경할 수 없습니다.
하지만, getLine 메소드를 사용하는 대신 getStackTrace() 메소드를 사용할 수 있습니다. getStackTrace() 메소드는 Throwable 객체의 스택 트레이스를 반환하며, 스택 트레이스는 예외가 발생한 위치의 정보를 담은 배열을 반환합니다.
#hostingforum.kr
java
public class Test {
public static void main(String[] args) {
try {
int a = 0;
int b = 1 / a;
} catch (ArithmeticException e) {
StackTraceElement[] stackTrace = e.getStackTrace();
System.out.println(Arrays.toString(stackTrace));
}
}
}
위의 코드에서 ArithmeticException이 발생한 경우, getStackTrace() 메소드는 반환하는 스택 트레이스에 다음 값을 담습니다.
- 첫 번째 원소: Test.java (예외가 발생한 클래스 이름)
- 두 번째 원소: 8 (예외가 발생한 라인 번호)
- 세 번째 원소: main(String[]) (예외가 발생한 메소드 이름)
getStackTrace() 메소드는 반환형이 StackTraceElement[] 인 점에 주의하셔야 합니다. StackTraceElement[]은 스택 트레이스를 담은 배열이며, 각 원소는 스택 트레이스의 한 부분을 담습니다. 스택 트레이스의 각 원소는 다음 값을 담습니다.
- className: 예외가 발생한 클래스 이름
- fileName: 예외가 발생한 파일 이름
- lineNumber: 예외가 발생한 라인 번호
- methodName: 예외가 발생한 메소드 이름
- moduleName: 예외가 발생한 모듈 이름
- nativeMethod: 예외가 발생한 메소드가 네이티브 메소드인지 여부
getStackTrace() 메소드는 반환형을 String[]이 아닌 다른 반환형으로 변경할 수 없습니다. 또한, 반환형을 String[]으로 유지하고, 반환하는 String[]의 원소의 개수를 변경할 수 없습니다.
2025-03-10 01:32