try~except - 예외처리
개발자는 에러가 발생할만한 곳에서 에러가 발생해도, 다른방식으로 처리하거나 에러를 무시하는 방식을 써서 프로그램이 죽지 않도록 방지한다.
문법적으로는 예외가 없으나 , 코드 실행 단계 발생하는 예외처리는 해줘야할 때가 있음
- 예외는 어떤 방식으로든 반드시 처리해야함
- 프로그램의 안정성을 높이고, 오류 메시지를 사용자가 이해하기 쉽도록 설정
예외 처리 기본 선언
try:
except Error1:
except Error2:
else:
finally:
SyntaxError: 문법 오류 - 잘못된 문법 사용
def example_Syntax_error():
try:
print('ffff')
except SyntaxError as e:
print(f"문법 오류 : {e}")
TypeError: 타입 오류 - 잘못된 데이터 타입 사용
def example_type_error():
try:
x = 10 + "5"
except TypeError as e:
print(f"타입 오류 : {e}")
NameError: 네이밍 오류 - 변수가 정의되지 않음
def example_name_error():
try:
print(non_existent_variable)
except NameError as e:
print(f"네이밍 오류 : {e}")
IndexError: 인덱스 오류 - 존재하지 않는 인덱스에 접근
def example_index_error():
try:
my_list = [1, 2, 3]
print(my_list[5])
except IndexError as e:
print(f"인덱스 오류 : {e}")
ValueError: 참조값 오류 - 잘못된 값을 사용
def example_value_error():
try:
number = int("안녕하세요")
except ValueError as e:
print(f"참조값 오류 : {e}")
KeyError: 키 오류 - Dict 키 값이 없음
def example_key_error():
try:
my_dict = {"name": "user", "age": 30}
print(my_dict["city"])
except KeyError as e:
print(f"딕셔너리 키 값 오류 : {e}")
FileNotFoundError: 파일 없는 오류 - 파일이나 디렉터리가 없음
def example_file_not_found_error():
try:
with open("non_existent_file.txt", "r") as file:
content = file.read()
except FileNotFoundError as e:
print(f"파일 없는 오류 : {e}")
ZeroDivisionError: 0으로 나누기 시도
def example_zero_division_error():
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"0으로 나눌수 없는 오류 : {e}")
실행
if __name__ == "__main__":
example_Syntax_error()
example_value_error()
example_type_error()
example_name_error()
example_index_error()
example_value_error()
example_key_error()
example_file_not_found_error()
example_zero_division_error()
raise 예외 처리
- 직접적으로 에러 처리를 해야할 때 사용 및 간판한 예외처리
while True:
try:
x = 'user'
if x == 'user':
print('유저 인증')
break
else:
raise ValueError
except ValueError:
print('유저 인증이 되지 않았습니다.')
else:
print('유저 인증이 완료되었습니다.')
finally:
print('인증 처리가 종료되었습니다.')