[Python] if ~ else, try ~ except 에 관해

Peter·2021년 4월 22일
0

Python

목록 보기
2/2

조건, 예외, 끝에선

  1. if ~ else ~
  2. try ~ except ~
    `

조건문, 예외처리 는 비슷한 점이 많지만
정확히 알고 있다면 생각보다 적합한 순간에 큰 도움을 주는 것들이다

1. if ~ else

흔히 사용하는 조건문의 사용방법은 매우 간단하다

if True:
    # 실행할 내용
else:
    # 위에 조건이 True가 아닐때 실행할 내용

기본적으로는 if 다음에 오는 내용이 참일 때 아래 내용이 실행되고
거짓일때 else 아래 내용이 실행된다
조건이 여러가지일 때는 elif 를 사용할 수 있다.



if True:
    # 조건이 참일때 실행할 내용
elif False:
    # 조건이 거짓일때 실행할 내용
else:
    # 위 내용이 전부 만족하지 않을 때 실행할내용

elif 를 여러번 사용할 수 있다.



if, elif 안에 있는 내용이 True False 중 하나를 만족하면 좋겠지만
오류가 나는 경우 아랫줄이 실행되지 못하고 빠져나와 오류를 알려준다
예상치 못한 오류라면 너무 고마운 상황이지만 예상가능한 오류지만 어떤 오류인지
오류 상황에서 추가 동작을 지시하고 싶을때 try ~ except ~를 사용해주면 된다



2. Try ~ except ~

지시한 내용을 실행하다 오류가 나는경우 전체적으로 멈추는 것이 아니라
예외처리를 하고 다음줄로 넘기려고 하는 상황에서 사용가능하다

a = ['1' ,'2', 'a', '3']

for i in a:
    print(int(i))

print("pass")

a 리스트엔 스트링 타입 데이터 4개가 있다
이 데이터들을 int 화 시켜 출력시키고 싶은 상황인데
중간 'a' 는 int화가 불가능한 데이터기 때문에 invalid literal 오류를 발생시킨다
따라서 오류 메세지를 보이고 나가버리고 아래 print("pass")는 실행되지 못한다.

프로그래밍을 하다보면 발생할 오류가 예측 가능하고
일단은 예외로 두고 나머지 코드들이 실행되도록 해야할 상황이 있는데



a = ['1' ,'2', 'a', '3']

try:
    for i in a:
        print(int(i))
except:
    print("error")

print("pass")

try ~ except ~를 사용해주면

1
2
error
pass

중간에 에러가 있더라도 코드 마지막줄까지 실행시켜준다
하지만 발생한 오류는 꼭 알고 있어야하고
결국 따로 처리를 해줘야한다는 사실을 잊지 말자



try:
     a = ["a", "b"]
     third = a[3]
except IndexError:
    print("error")

print("pass")

except 다음엔 발생할 오류를 예측해 오류 종류에 따른 코드를 실행시켜줄 수 있다.
위 상황은 흔히 볼 수 있는 인덱스 오류인데 a 리스트에 3번째 인자가 없는데 호풀했기 때문에 인덱스에러가 발생했다.
이 경우 인덱스 에러가 아닌 에러가 발생하면 아랫줄을 실행하지 못하고 중지된다.



try:
     a = ["a", "b"]
     third = a[3]
except IndexError as e:
    print(e)

에러에 대한 메세지를 위와 같이 출력도 가능하다

list index out of range

다음과 같이 인덱스에러에 관한 메세지를 출력하기 때문에
디버깅할때 유리하다



try:
     a = ["a", "b"]
     third = a[3]
except IndexError:
    print("error")
except AssertionError:
    print("other error")

print("pass")

위처럼 한개 이상의 오류를 다룰 수 있다
파이썬에서 발생하는 오류의 종류는
Python docs 에서 확인 가능하다.



try:
     a = ["a", "b"]
     third = a[3]
except IndexError:
    print("error")
finally:
    print("pass")

finally를 통해 Try 가 실행되든 except가 실행되든 마지막에 실행될 코드를 넣을 수 있다
print("pass")는 결국 마지막에 실행된다.

profile
컴퓨터가 좋아

0개의 댓글