[파이썬] 예외
by mini_min[파이썬] 예외
🖋️ 예외
: 예외가 발생하면 프로그램이 종료된다.
예외 발생시 프로그램 종료를 막기 위해서 try ~ except 문을 사용한다.
try 안에 예외가 발생할 가능성이 있는 코드를 쓰고 except 안에 예외 발생할 때 실행할 코드를 작성한다.
# 모든 예외처리
print("---시작---")
try: # 예외가 발생할 가능성이 있는 코드
a = 10
b = 0
c = a / b
print(f"{a} / {b} = {c}")
except: #예외 발생할 때 실행할 코드
print("예외 발생...")
print("---종료---")
: 예외 회피
예외 발생할 때 실행할 코드에 pass 를 넣어 예외 회피
# 모든 예외처리 - 예외 회피
print("---시작---")
try: # 예외가 발생할 가능성이 있는 코드
a = 10
b = 0
c = a / b
print(f"{a} / {b} = {c}")
except: #예외 발생할 때 실행할 코드
pass
print("---종료---")
: 예외 발생할 때 실행할 코드에 예외 타입을 설정한다.
# 모든 예외처리
print("---시작---")
try: # 예외가 발생할 가능성이 있는 코드
a = 10
b = 0
c = a / b
print(f"{a} / {b} = {c}")
except ZeroDivisionError: #예외 발생할 때 실행할 코드
print("0으로 나눌 수 없습니다.")
print("---종료---")
: 예외 변수
# 모든 예외처리 - 예외변수
print("---시작---")
try: # 예외가 발생할 가능성이 있는 코드
a = 10
b = 0
c = a / b
print(f"{a} / {b} = {c}")
except ZeroDivisionError as err:
print(err)
print("---종료---")
: 예외 변수 2
# 여러 예외처리
print("---시작---")
try: # 예외가 발생할 가능성이 있는 코드
a , b = map(int, input('두 정수 ? ').split())
c = a / b
print(f"{a} / {b} = {c}")
except ValueError:
print("정수만 입력 가능합니다.")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
except Exception as err:
print(err)
print("---종료---")
# 여러 예외처리
print("---시작---")
try: # 예외가 발생할 가능성이 있는 코드
a , b = map(int, input('두 정수 ? ').split())
c = a / b
print(f"{a} / {b} = {c}")
except (ValueError, ZeroDivisionError):
print(" 연산 불가 ")
except Exception as err:
print(err)
print("---종료---")
: 상위 예외타입을 마지막에 기술하지 않으면 하위 예외타입은 처리하지 않는다.
# 여러 예외처리를 처리하는 경우 상위 예외타입을 마지막에 기술하지 않으면
# 하위 예외타입은 처리하지 않는다.
print("---시작---")
try: # 예외가 발생할 가능성이 있는 코드
a , b = map(int, input('두 정수 ? ').split())
c = a / b
print(f"{a} / {b} = {c}")
except ValueError:
print("정수만 입력 가능합니다.")
except Exception:
print("0으로 나눌 수 없습니다.")
except ZeroDivisionError as err:
print(err)
print("---종료---")
: finally 는 예외 발생과 상관없이 실행된다.
# try ~ except ~ finally
print("---시작---")
try: # 예외가 발생할 가능성이 있는 코드
a , b = map(int, input('두 정수 ? ').split())
c = a / b
print(f"{a} / {b} = {c}")
except Exception:
print("0으로 나눌 수 없습니다.")
finally:
print("예외 발생이랑 상관없이 실행")
print("---종료---")
# try ~ finally
print("---시작---")
try: # 예외가 발생할 가능성이 있는 코드
a , b = map(int, input('두 정수 ? ').split())
c = a / b
print(f"{a} / {b} = {c}")
except Exception:
print("0으로 나눌 수 없습니다.")
else:
print("예외가 발생하지 않은 경우만 실행... 굳이 ..?")
finally:
print("예외 발생이랑 상관없이 실행")
print("---종료---")
: 예외 발생은 raise 문을 사용한다. 해당 구문을 사용해 명시적으로 예외를 발생시킨다.
#예외 발생
a = int(input('1~5이내의 수 ? '))
if a < 1 or a > 5:
raise
print(f"입력한 값: {a}")
#예외 발생
try:
a = int(input('나이 ? '))
if a < 0:
raise
result = "성인" if a >= 19 else "미성년자"
print(f"나이 : {a}, {result}")
except:
print("나이는 0 이상만 입력 가능!! ")
#예외 발생 - 예외 타입 명시
try:
a = int(input('나이 ? '))
if a < 0:
raise ValueError
result = "성인" if a >= 19 else "미성년자"
print(f"나이 : {a}, {result}")
except ValueError:
print("나이는 0 이상만 입력 가능!! ")
: 예외 발생시 예외 타입을 명시할 수 있다.
#예외 발생 - 예외 타입 명시
try:
a = int(input('나이 ? '))
if a < 0:
raise Exception('나이는 0 이상만..')
result = "성인" if a >= 19 else "미성년자"
print(f"나이 : {a}, {result}")
except Exception as err:
print(err)
: 사용자 정의 예외 클래스를 만들 수 있다.
Exception 클래스나 그 하위 클래스를 상속 받아서 구현한다.
class MyError(Exception):
pass
try:
a = int(input('영문자 ASCII 코드 :'))
if(not(a>=65 and a <= 90) and not (a>= 97 and a<=122)):
raise MyError
c = chr(a)
print(f"ASCII 코드 : {a}, 문자 : {c}")
except MyError:
print("영문자 코드가 아닙니다.")
: assert 구문 은 어떤 조건이 True 임을 보증하기 위해서 사용한다.
단순 에러를 찾는 것이 아니라 값을 보증하기 위해 사용된다.
조건이 거짓이면 보증하지 않은 동작이면 AssertionError 를 발생한다.
def test(n):
assert type(n) is int, "정수가 아닌 값이 존재..."
a = [1,2,3,4,5.5,7]
for n in a:
test(n)
print('모든수가 정수..')
'Python' 카테고리의 다른 글
| [파이썬] 정규식 (0) | 2022.12.25 |
|---|---|
| [파이썬] 파일 처리 (1) | 2022.12.25 |
| [파이썬] 모듈 (0) | 2022.12.25 |
| [파이썬] 클래스 다중상속, 추상 메서드 (1) | 2022.12.25 |
| [파이썬] 클래스 2 (0) | 2022.12.25 |
블로그의 정보
개발자 미니민의 개발로그
mini_min