스택큐힙리스트

예외를 잡았을 때, 타입, 파일 그리고 라인 번호를 어떻게 가져올 수 있나요? 본문

카테고리 없음

예외를 잡았을 때, 타입, 파일 그리고 라인 번호를 어떻게 가져올 수 있나요?

스택큐힙리스트 2023. 4. 17. 15:51
반응형

이렇게 출력되는 예외를 잡는 것:

Traceback (most recent call last):

File c:/tmp.py, line 1, in

4 / 0

ZeroDivisionError: integer division or modulo by zero

저는 이것을 형식에 맞게 만들고 싶습니다.

ZeroDivisonError, tmp.py, 1

답변 1

import sys, os

try:

raise NotImplementedError(No error)

except Exception as e:

exc_type, exc_obj, exc_tb = sys.exc_info()

fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]

print(exc_type, fname, exc_tb.tb_lineno)

답변 2

예외가 발생하면 타입, 파일 및 라인 번호를 어떻게 가져올까요?

예외 처리는 모든 프로그래머에게 중요한 주제입니다. 예외 처리는 프로그램이 크래시나 오류로 인해 중단되는 것을 방지하기 위해 필요합니다. 따라서 예외를 처리하는 방법에 대한 이해가 필수적입니다.

예외 처리를 할 때 타입, 파일, 그리고 라인 번호를 가져올 수 있습니다. 타입은 예외의 종류를 나타내기 때문에 발생한 문제를 빠르게 파악할 수 있습니다. 파일과 라인 번호는 예외가 발생한 위치를 알려줍니다.

예외를 가져오기 위해서는 try-catch 블록을 사용해야 합니다. try 블록 내에서 오류가 발생하면 해당 예외는 catch 블록으로 이동합니다. catch 블록에서는 예외에 대한 정보를 출력할 수 있습니다.

예를 들어, 다음 코드는 NullPointerException을 발생시킵니다.

```java

String str = null;

System.out.println(str.length());

```

이 경우, NullPointerException이 발생하고 이 예외를 처리할 수 있도록 try-catch 블록을 사용해야 합니다.

```java

try {

String str = null;

System.out.println(str.length());

} catch (NullPointerException e) {

System.out.println(예외 발생: + e);

System.out.println(예외 타입: + e.getClass());

System.out.println(예외 발생 위치: + e.getStackTrace()[0].getFileName()

+ , 라인 + e.getStackTrace()[0].getLineNumber());

}

```

catch 블록에서는 예외에 대한 정보를 출력합니다. 예외 타입을 출력하면 어떤 종류의 예외인지 쉽게 파악할 수 있습니다. getStackTrace 메소드를 사용하면 예외가 발생한 위치를 손쉽게 파악할 수 있습니다. getFileName 메소드와 getLineNumber 메소드를 사용하면 각각 어떤 파일과 라인에서 예외가 발생했는지 확인할 수 있습니다.

요약하자면, 예외 처리를 할 때는 try-catch 블록을 사용해야 하며, catch 블록에서는 예외에 대한 정보를 출력할 수 있습니다. 이 정보에는 예외 타입, 파일 및 라인 번호도 포함되어 있습니다. 이러한 정보를 사용하면 예외 처리를 보다 쉽게 할 수 있습니다.

반응형
Comments