본문 바로가기
국비교육

Python 4일차

by Diligejy 2019. 5. 3.

1. Exception

# -*- coding:utf-8 -*-
import sys
try:
    10/0
except:
    print(sys.exc_info())
    

실행결과 : (<class 'ZeroDivisionError'>, ZeroDivisionError('division by zero',), )

 

exc_info -> Return형이 Error 객체 -> 로그데이터 쌓을 때 사용

 

2.

# -*- coding:utf-8 -*-
import sys
try:
   #10/0
   a = int('string')
except:
    print(sys.exc_info())
    

실행결과 : (<class 'ValueError'>, ValueError("invalid literal for int() with base 10: 'string'",), )

 

3. ZeroDivisionError에 대하여

4.

# -*- coding:utf-8 -*-
import traceback

def f1(a,b):
    return f2(a) + f2(b)

def f2(x):
    return 1.0/x

try:
    f1(1.0, 0.0)
except:
    traceback.print_exc()

 

실행결과 :

Traceback (most recent call last):
  File "C:\pythonwork\MyPython\chap0\Error06.py", line 11, in 
    f1(1.0, 0.0)
  File "C:\pythonwork\MyPython\chap0\Error06.py", line 5, in f1
    return f2(a) + f2(b)
  File "C:\pythonwork\MyPython\chap0\Error06.py", line 8, in f2
    return 1.0/x
ZeroDivisionError: float division by zero

 

 

-> 왜 이런걸 쓰나?

except(ZeroDivisionError, IOError): -> 이런건 우리가 Error를 알고 있을 때 사용

하지만, 프로그래밍을 하다보면, 어떤 Exception이 발생할지 모름.

 

traceback : 스택 추적을 보거나 검색하는 모듈

traceback에 sys를 포함하고 있음

 

ⓐ traceback.print_exc() : 코드 내용 보여줌 

ⓑ sys.exc_info() : 에러 보는게 아니라 실행 정보 보여줌

 

5.

 

'국비교육' 카테고리의 다른 글

Python 6일차  (0) 2019.05.08
Python 5일차  (0) 2019.05.07
Python 3일차  (0) 2019.05.02
Python 2일차  (0) 2019.04.30
자바 Lambda식  (0) 2019.04.25

댓글