예외 처리 try except

Grace Goh·2022년 9월 20일
0

Python

목록 보기
19/24

Python뿐 아니라 어떤 프로그래밍 언어로 짜더라도 '오류 처리'는 중요하다.

개발자가 예측하지 못한 사용자의 행동, 프로그램의 로직상 문제점 등을 예외 처리를 해서 프로그램이 중단되는 일이 없도록 해야 한다.

프로그램을 무책임하게 짜서 try exception을 엄청 많이 여기저기 쓰면 나중에는 프로그램 최종 결과가 어떻게 됐는지, 왜 이렇게 나오는지 모르는 상황이 발생할 수 있다.

개발 과정에서 오류가 생길 수 있는 요소들을 최대한 배제하고 대비한 후, 그러고 나서 그 외에 발생할 특별한 경우에 try except문을 쓴다. 그런 부분까지 처리할 때 완벽한 프로그램을 만들 수 있다. 반드시 숙지하기!

1. 오류 내용을 알아야 할 때

# value 에러
try:
    val = "10.5"
    n = int(val)
except ValueError as e: # value 에러가 발생할 것 같다고 추측할 경우
    print("다음과 같은 오류 발생 : {}".format(e))
    # 다음과 같은 오류 발생 : invalid literal for int() with base 10: '10.5'


# index 에러
try:
    idx = []
    idx[0] = 100 # 인덱스 에러
except IndexError as e:
    print("다음과 같은 오류 발생 : {}".format(e))
	# 다음과 같은 오류 발생 : list assignment index out of range


# Exception 더 많이 쓴다. 예상되는 에러를 특정하지 않을 때.
try:
    idx = []
    idx[0] = 100
except Exception as e: # as는 별명
        print("다음과 같은 오류 발생 : {}".format(e))

2. 오류 내용은 몰라도 괜찮을 때, 예외 처리 only

try:
    idx = []
    idx[0] = 100 # 인덱스 에러
except: 
    pass 
    
print("done")
# done

주의 pass식 예외처리를 남발하면 '어디서 어떻게 안 되는지'를 파악할 수 없게 된다. (위는 약간 무책임한 상황) 개발자는 프로그래밍 할 때 최대한 오류가 없도록 핸들링 한 상태에서 개발해야 한다.

3. try - except - else

try:
    n = "10" 
    v = int(n) 
except:
    print("오류 발생")
else: 
    print("정상 동작 확인")

try문에서 오류 의심 처리를 하고, 오류가 발생하면 except에 걸린다.
오류 없이 정상 작동하면 else문이 찍힌다.

4. finally

# finally는 오류가 발생하든 안 하든 실행된다.

try:
    file = open("sample.txt", "r") # r모드로 읽기. 파일 open된 상태에서
    n = "10.5" # 여기서 오류 발생
    v = int(n)
except:
    print("오류 발생")
finally: # 파일은 열린 상태인데, 오류 발생과 무관하게 호출하는 finally문에서
    file.close() # 파일 닫는 코드를 실행할 수 있다.
    print("파이널리 호출")
profile
Español, Inglés, Coreano y Python

0개의 댓글