exception
-python에서 무엇인가가 잘못된 경우, python에서 interpreter는 exception을 발생시킴.
:동작을 중단시키는 에러
=crash 발생
exception handling: exception 처리
-try와 except를 이용해 처리
ex) 예시 코드
try:
exception이 발생가능한 부분
except 처리할_exception as 별칭: #별칭은 발생한 예외 객체를 참조하는 변수. 예외에 간단한 접근을 가능하게 함.
별칭을 통해 exception객체에 접근
exception 발생시 실행되는 코드들
except 처리할_exception1 as 별칭:
또 다른 type의 exception에 대한 처리 부분.
앞서 except에서 처리가 되지 않은 경우에 처리가 됨.(elif와 비슷한 원리)
else:
try block에서 예외가 발생하지 않았을 시 실행됨.
finally:
exception 발생에 상관없이 수행되는 처리 부분(생략가능)
- except code block들은 처리할 exception별로 만들어주면 됨.
- ValueError: 기대한 값이 아닌 값이 입력되었을 때 발생하는 예외.
- else
- except과 finally 사이에 위치
- try block에서 exception이 발생하지 않은 경우에만 수행됨.
- exception이 발생하지 않은 경우 else block과 finally block이 수행됨.
- finally block은 항상 수행됨.

raise: python에서 예외를 발생시키기 위해 사용하는 키워드. 이를 통해 프로그래머는 특정 조건이 충족되지 않을 때 예외를 일으킬 수 있음. except에서 처리하고 해당 exception을 다시 interpreter에게 넘길 수도 있음. (이 경우 프로그램은 exception으로 종료됨- 비정상종료) 정상종료를 시키기 위해서는 raise를 제거해야함. 비정상종료도 finally문이 수행되고 난 이후임.
ex)
모든 exception 한 번에 처리(권장되지 않음.)
except:
모든 예외 처리
syntax error: 문법적 에러

- try block: "not_a_number" 라는 문자열을 int()함수에 전달하여 정수로 변환하려 함.
- not_a_number는 숫자가 아니므로 int로 변환불가 - ValueError 발생
- except block: 'ValueError' 예외 발생시 except block 실행. 발생한 예외 객체를 'e'라는 변수에 할당함.
- print(f"ValueError: {e}")는 예외 객체 'e'의 메시지를 출력함. 'e'는 ValueError 객체이고, 이 객체의 메시지('e'가 담고있는 메시지)는 'invalid literal for int() with base 10: 'not_a_number' 이다.
- 'invalid literal for int() with base 10: 'not a number'
- invalid literal: 유효하지 않는 문자열. int()함수가 인자로 받은 문자열이 숫자로 해석될 수 없음.
- for int() with base 10: base 10-십진법 사용, int() 함수가 기본적으로 사용하는 십진법(base 10)을 기준으로 변환을 시도했음.
- not_a_number: 변환을 시도한 문자열 명시
- 'invalid literal for int() with base 10: 'not a number'
- 참고
- traceback: python 실행에서 에러가 발생할 경우 출력됨. 해당 에러가 발생한 지점에서의 stack의 정보를 역추적하여 출력한 결과물
- stack(First-In-Last-Out): 처음으로 들어온 요소가 마지막으로 나감.(쌓임)
- debugging시 밑에서부터 읽어 올라감.
- 디버깅: 프로그램이나 소프트웨어의 버그를 찾아내고 수정하는 과정. 코드 실행 중에 발생하는 오류를 식별하고 해결하는 과정임. 디버깅을 이용해 프로그램이 예상대로 작동하지 않는 이유를 파악하고 수정할 수 있다.
- print_exc(): traceback 메시지 출력. 주로 예외가 발생한 경우 즉시 추적 정보를 표시하고자 할 때 유용함.
- format_exc(): traceback 메시지에 해당하는 문자열 반환. 추적 정보를 변수에 저장하거나 파일에 기록하고자 할 때 유용함.
'컴퓨터프로그래밍' 카테고리의 다른 글
| paradigm (0) | 2024.05.20 |
|---|---|
| nested, scope (0) | 2024.05.20 |
| control structure (0) | 2024.05.20 |
| expression, statement (0) | 2024.05.20 |
| Python Type (0) | 2024.05.20 |