ursobad
ursobad
ursobad
전체 방문자
오늘
어제
  • 분류 전체보기 (116)
    • Emotion (35)
      • 파이썬 (10)
      • 문제 (10)
      • 인공지능 기초 (15)
    • Best of the Best (3)
    • Hacking (58)
      • HackCTF (12)
      • DreamHACK (7)
      • Webhacking.kr (19)
      • Root Me (6)
      • HTB (5)
      • 기타 (7)
      • 리버싱 소수전공 (2)
    • 기능반 (16)
      • 2과제 (14)
      • 3과제 (2)
    • 기록 (3)
    • 짧은 글들 (0)
    • 기타 (1)
    • Zombie (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BoB 질문
  • 앙상블
  • 얼굴검출
  • 의사결정트리
  • BoB 자소서
  • Python
  • BoB 필기
  • 함수
  • 구독자 전용 다시보기
  • BoB 자기소개
  • 123
  • 백준
  • BoB 자기소개서
  • BoB 11기
  • KNN
  • 파이썬
  • Bob
  • OpenCV
  • 머신러닝
  • BoB 면접

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ursobad

ursobad

Emotion/파이썬

예외처리

2020. 9. 4. 15:27

예외처리

예외(exception)란?
- 코드를 실행하는 중에 발생한 에러

ex)

def ten_div(n): return 10/n print(ten_div(0)) --출력-- ZeroDivisionError: division by zero 

10을 0으로 나누면 무한루프에 빠지기때문에 오류를 출력

try except 사용

구조)

try: 실행할 코드 except: 예외가 발생했을때 실행할 코드

예외가 발생하면 except로 내려가서 코드를 실행
위 코드를 try except를 이용해 수정

fix)

try: n = int(input('숫자를 입력하세요>>')) y = 10/n print(y) except: print('예외가 발생했습니다') --입출력-- 숫자를 입력하세요>>0 예외가 발생했습니다

 

에러 메시지 받아오기

구조)

try: 실행할 코드 except 예외 as 변수: 예외가 발생했을때 실행하는 코드


ex)

y = [10,20,30] try: index, n = map(int,input('인덱스와 나눌 숫자를 입력>> ').split()) print(y[index]/n) except ZeroDivisionError as e: print('숫자를 0으로 나눌수 없습니다',e) except IndexError as e: print('잘못된 인덱스입니다', e) --입출력-- 인덱스와 나눌 숫자를 입력>>2 0 숫자를 0으로 나눌수 없습니다 division by zero 인덱스와 나눌 숫자를 입력>>10 2 잘못된 인덱스입니다 list index out of range

 

else와 finally 사용

구조)

try: 실행할 코드 except : 예외가 발생했을때 실행하는 코드 else: 예외가 발생하지 않았을대 실행할 코드 finally: 예외 발생 여부와 상관없이 항상 실행할 코드


ex)

try: n = int(input('숫자를 입력하세요>>')) y = 10/n except ZeroDivisionError as e: print('숫자를 0으로 나눌수 없습니다',e) else: print(y) finally: print("코드 실행이 끝났습니다") --입출력-- 숫자를 입력하세요>>2 5.0 코드 실행이 끝났습니다 숫자를 입력하세요>>0 숫자를 0으로 나눌수 없습니다 division by zero 코드 실행이 끝났습니다

 

#참고사항#

- try는 함수가 아니므로 스택 프레임을 만들지 않음 #잘모르겠다#
- try, except, else, finally 안에서 변수를 만들더라도 바깥에서 사용 가능

예외 발생시키기

구조)

raise 예외(‘에러메시지’)


ex)

try: n = int(input('3의 배수 입력>>')) if n%3 !=0: raise Exception('3의 배수가 아닙니다') print(n) except Exception as e: print('예외가 발생했습니다', e) --입출력-- 3의 배수 입력>>3 3 3의 배수 입력>>8 예외가 발생했습니다 3의 배수가 아닙니다

8은 3의 배수가 아니므로 raise Exception로 예외가 발생
Exception의 예외메시지는 Exception as e의 e변수로 들어감
raise로 예외를 발생시키면 raise아래의 코드는 실행하지 않음

#참고 - assert로 예외 발생시키기#

구조)

assert 조건식 assert 조건식, 에러메시지 


ex)

n = int(input('3의 배수 입력>>')) assert n%3 == 0,'3의 배수가 아닙니다' print(n) --입출력-- 3의 배수 입력>>5 assert n%3 == 0,'3의 배수가 아닙니다' AssertionError: 3의 배수가 아닙니다

assert는 조건식이 거짓일 때 AssertionError 예외를 발생시키며 조건식이 참이면 그냥 넘어감
보통 assert는 나와서는 안 되는 조건을 검사할 때 사용

'Emotion > 파이썬' 카테고리의 다른 글

모듈과 패키지  (0) 2020.09.07
클래스_2  (0) 2020.09.02
클래스_1  (0) 2020.09.01
함수_2  (0) 2020.08.26
파이썬 함수_1  (0) 2020.07.08
    'Emotion/파이썬' 카테고리의 다른 글
    • 모듈과 패키지
    • 클래스_2
    • 클래스_1
    • 함수_2
    ursobad
    ursobad

    티스토리툴바