study gomi

[Python|파이썬] 기본 문법 - 오류, 예외 처리 본문

basic/python

[Python|파이썬] 기본 문법 - 오류, 예외 처리

공부하곰 2024. 1. 11. 01:29
728x90
반응형

에러

프로그램 실행 중에 발생하는 문제로 크게 두 가지로 나뉨.

- 에러의 종류

더보기
  1. 구문 에러(Syntax Errors): 코드의 문법이 잘못되었을 때 발생(예: 괄호의 불일치, 잘못된 들여쓰기, 잘못된 명령어 사용 등.) 구문 에러는 프로그램이 실행되기 전에 발견 됨.
  2. 예외(Exceptions): 프로그램이 실행 중일 때 발생하는 에러, 구문 에러와 달리 실행 시점에 문제가 발생. 예외는 파일을 찾을 수 없거나, 네트워크 연결 오류, 0으로 나누기 시도 등 다양한 상황에서 발생.

 

예외 처리

- 프로그램이 예상치 못한 상황, 즉 예외(Exception)에 직면했을 때 이를 적절히 처리.

- 프로그램의 정상적인 흐름을 유지하기 위한 방법

- 가장 일반적인 예외 처리 구조는 try, except, else, finally 블록을 사용

- 예외 처리를 사용함으로써 프로그램이 예외 상황에서도 더 견고하고 예측 가능하게 동작하도록 만들 수 있다.

- try 문에는 에러가 발생할 가능성이 있는 문장 / except 블록에서 에러 처리 / finally문은 마지막으로 수행. 프로그램의 나머지 부분이 정상적으로 진행됨. /  else 블록은 예외가 발생하지 않았을 때만 정상적으로 실행

더보기
  1. try 블록: 이 블록 안에는 예외가 발생할 가능성이 있는 코드를 작성. 예외가 발생하면 즉시 try 블록의 나머지 부분은 실행되지 않고 해당 예외에 맞는 except 블록으로 제어가 이동.
  2. except 블록: 여기서 특정 예외를 처리. 여러 개의 except 블록을 사용하여 다양한 예외를 다르게 처리할 수 있다. 예외의 종류를 지정하지 않으면 모든 종류의 예외를 잡을 수 있지만, 이는 좋은 방법이 아님. 가능한 한 구체적인 예외 유형을 명시.
  3. else 블록 (선택적): 이 블록은 try 블록 내의 코드가 예외 없이 성공적으로 실행되었을 때 실행. try 블록의 코드가 예외를 발생시키지 않으면 이 블록이 실행.
  4. finally 블록 (선택적): 이 블록은 예외 발생 여부와 관계없이 항상 실행. 이 블록은 일반적으로 자원을 정리하거나 파일을 닫는 등의 작업을 위해 사용됨.
try:
    # 예외가 발생할 수 있는 코드 (0으로 나누려고 함)
    result = 10 / 0
except ZeroDivisionError:
    # ZeroDivisionError 예외를 처리
    print("0으로 나눌 수 없습니다.")
else:
    # 예외가 발생하지 않았을 때 실행
    print("연산 성공:", result)
finally:
    # 예외 발생 여부와 상관없이 항상 실행
    print("예외 처리 완료")

 

- try ~ except / try ~ finally / try ~ except ~ else / try ~ except ~ else ~ finally

- except 또는 finally와 꼭 함께 쓰임.

 

Exception as err 구문

- try except 블록에서 예외 처리를 할 때 사용됨.

- 이 구문을 사용하면 발생한 예외의 세부 정보에 접근할 수 있다 ( 어떤 에러인지 그 내용을 확인 할 수 있다는 뜻.)

- 발생한 예외의 유형과 관련된 메세지를 err 변수에 저장.

- err 변수를 통해서 예외의 세부 정보를 얻음.

- 예외의 종류가 불분명할 때나 여러 다른 예외를 동일한 방식으로 처리해야 할 때 유용.

try:
    # 예외가 발생할 가능성이 있는 코드
    result = 10 / 0
except Exception as err:
    # 예외가 발생했을 때 실행되는 블록
    print("An error occurred:", err)

 

- 그러나 가능한 한 구체적인 예외 유형을 명시하는 것이 좋은 프로그래밍 관행이다.

- 예를 들어, ZeroDivisionErrorFileNotFoundError와 같이 특정한 예외를 잡는 것이 더 좋은 방법일 수 있다.

728x90
반응형