산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

파이썬 예외 처리 마스터: try, except, finally, raise 효과적 활용

파이썬 예외 처리 마스터: try, except, finally, raise 효과적 활용

파이썬 예외 처리란?

예외는 프로그램 실행 시 발생하는 에러입니다. 그러나 프로그램을 실행하는 동안 파이썬은 처리되어야 할 예외를 생성하며, 처리하지 않으면 프로그램이 크래시합니다. 파이썬에서 예외는 에러 시 자동으로 발생하거나, 코드에 의해 트리거되고 가로챌 수 있습니다.

예외는 이벤트가 발생할 수 있지만, 이런 유형의 이벤트는 드물게 발생함을 나타냅니다. 메서드가 예외를 처리할 수 없으면 호출자 함수로 던져집니다. 결국 메인 함수 밖으로 예외가 던져지면 프로그램이 갑자기 종료됩니다.

이 파이썬 예외 처리 튜토리얼에서 배울 내용:

예외의 일반적인 예:

왜 예외를 사용해야 하는가?

파이썬에서 예외를 사용하는 이유:

예외의 규칙

파이썬 예외 처리의 필수 규칙:

파이썬 예외 처리 메커니즘

예외 처리는 다음 5개 키워드로 관리:

  1. try
  2. catch
  3. finally
  4. throw

파이썬 Try 문

try 문은 키워드 try, 콜론(:), 예외가 발생할 수 있는 코드 스위트로 구성. 하나 이상의 절을 가짐.

try 문 실행 중 예외가 없으면 인터프리터는 해당 try 문의 예외 핸들러를 무시.

try 스위트에서 예외 발생 시 try 스위트 만료되고 프로그램 제어가 try 스위트 뒤따르는 일치하는 except 핸들러로 이동.

문법: try: statement(s)

Catch 문

Catch 블록은 한 번에 한 인자를 받으며, 잡을 예외 타입. 이 인자는 특정 예외 타입부터 모든 예외를 잡는 잡올 카테고리까지 다양.

Catch 블록 규칙:

예제:

try {
} catch (ArrayIndexOutOfBoundsException e) {
    System.err.printin("Caught first " + e.getMessage());
} catch (IOException e) {
    System.err.printin("Caught second " + e.getMessage());
}

파이썬 Finally 문

Finally 블록은 예외 발생 여부와 상관없이 항상 실행. final 키워드로 try-catch 블록 뒤따르는 코드 블록 생성 가능.

Finally 절은 선택 사항. 모든 조건에서 실행되어야 할 정리 작업 정의 의도.

try:
    raise KeyboardInterrupt
finally:
    print('welcome, world!')
출력:
Welcome, world!
KeyboardInterrupt

Finally 절은 try 문 전에 실행됨.

파이썬 Raise 문

Raise 문은 예외 객체를 초기화하는 인자 지정. 예외 이름 뒤에 콤마, 그 뒤에 인자 또는 인자 튜플.

문법:

raise [Exception [, args [, traceback]]]

이 문법에서 인자는 선택 사항이며, 실행 시 예외 인자 값은 항상 none.

예제:

파이썬 예외는 문자열, 클래스, 숫자, 객체 등 어떤 값이든 될 수 있음. 파이썬 코어에서 발생하는 대부분의 예외는 인자를 가진 클래스이며, 인자는 클래스의 인스턴스.

중요한 파이썬 에러

에러 타입설명
ArithmeticError모든 산술 예외의 베이스 클래스. 산술 연산 에러 시 발생.
ImportError존재하지 않는 모듈 임포트 시도 시 발생. 모듈명 오타나 표준 경로에 모듈 없을 때.
IndexError범위를 벗어난 시퀀스 참조 시도 시 발생.
KeyError딕셔너리에서 특정 키를 못 찾을 때 발생.
NameError로컬/전역 네임스페이스에 없는 이름을 코드에서 참조할 때 발생.
ValueError함수나 내장 연산이 올바른 타입이지만 부적절한 값의 인자 받을 때 발생.
EOFError내장 함수(input() 등)가 데이터 읽지 않고 EOF 조건 도달 시 발생.
ZeroDivisionError모든 숫자 타입에서 0으로 나누기나 모듈로 연산 시 발생.
IOError입출력 연산 실패 시 발생.
SyntaxError파이썬 문법 에러 시 발생.
IndentationError들여쓰기가 제대로 정의되지 않았을 때 발생.

기타 중요한 파이썬 예외

예외설명
ArithmeticException0으로 나누기 같은 산술 에러.
ArrayIndexOutOfBoundsException배열 인덱스 범위 초과.
ArrayStoreException호환 안 되는 타입의 배열 요소 할당.
ClassCastException잘못된 캐스팅.
IllegalMonitorStateException잠금 안 된 스레드에서 대기 같은 불법 모니터 연산.
IllegalStateException환경이나 애플리케이션이 잘못된 상태.
ClassNotFoundException클래스를 찾을 수 없음.
CloneNotSupportedExceptionCloneable 인터페이스 미구현 객체 복제 시도.
IllegalAccessException클래스 접근 거부.
InstantiationException인터페이스나 추상 클래스 객체 생성 시도 시 발생.
CloneNotSupportedException인터페이스 미구현 객체 복제 시도.

에러 vs 예외

에러예외
파이썬의 모든 에러는 언체크드 타입.예외는 체크드와 언체크드 타입 모두 포함.
컴파일러가 모르는 런타임에 발생.try-catch 블록으로 처리해 복구 가능.
주로 애플리케이션 실행 환경이 원인.애플리케이션 자체가 원인.
예: OutOfMemoryError예: 체크드 예외, SQL 예외, NullPointerException 등.

요약

python

  1. 파이썬 데이터 타입 마스터하기: 실전 가이드
  2. 파이썬 연산자 마스터하기: 종합 가이드
  3. 파이썬 pass 문 마스터하기: 실전 가이드
  4. 파이썬 함수 인자 마스터하기: 위치, 키워드, 기본 매개변수
  5. Python 딕셔너리 마스터하기: 생성, 조작, 고급 기법
  6. Python 예외 처리 마스터하기: try, except, else, finally 완전 정복
  7. Python 이터레이터: 작동 원리와 직접 만들기
  8. Python 클로저 이해하기: 중첩 함수가 변수 캡처하는 방법
  9. Java 예외 처리 마스터: try-catch-finally, throw, throws 완전 정복
  10. Java 예외 처리 심화: try-catch-finally와 리소스 관리