[Python] 12. 예외처리(Excetption), try, except ~ else ~ finally 실습

2017. 8. 2. 17:04·빅데이터 프로그래밍/Python
728x90
반응형

01. 예외처리(Exception)
1) 이클립스상에서 개발시에 Python script(클래스)가 안정적으로 컴파일된 후 운영중에 발생하는 에러를 "예외"라고 한다. 
예외는 코드상에서 발생하는 에러하고는 다르며 컴파일시에는 예외가 발생하지 않음. 
마치 손상된 USB를 읽어오는 프로그램이 있다면 USB는 인식이되나 읽어 올 수 없음으로 

경고창이 발생하는 경우.
예) 네트웍 장애, IO, DBMS 서버 다운, 저장 장치의 용량이 없는 경우. 

2) 예외가 발생하면 프로그램이 메시지 출력후 종료되어 심각한 문제가 발생할 수 있으나 예외 처리를 하면, 예외가 발생되서 프로그램이 끝나는 것이
아니라 나머지 루틴이 정상적으로 실행됨으로 안정적인 프로그램이됨. 

3)

try:
          예외 발생 예상 코드
       except Exception as e: 
           예외 발생 원인 출력
       else:
           예외가 발생하지 않은 경우
       finally:
           예외 발생과 상관없이 실행되는 루틴

4) Exception API: https://docs.python.org/3/library/exceptions.html  

 

1. try ~ except ~ else 실습

- tot = input('총점을 입력하세요.');

[실행 화면]
① 정수형으로 변환하지 않은 경우

총점을 입력하세요: 250  
과목수를 입력하세요: 3
예외가 발생했습니다.
unsupported operand type(s) for /: 'str' and 'str'
    
② 정상적인 경우
총점을 입력하세요: 240
과목수를 입력하세요: 3
tot: 240
cnt: 3
avg: 80.0
 
③ else를 사용한경우
총점을 입력하세요: 230
과목수를 입력하세요: 3
tot: 230
cnt: 3
avg: 76.66666666666667
평균은 76.66666666666667 입니다.
---------------------------------------------------
▷ oop1.Except1.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

try:
    tot = int(input('총점을 입력하세요: '))
    cnt = int(input('과목수를 입력하세요: '))
    avg = tot / cnt

    print('tot: ' + str(tot))
    print('cnt: ' + str(cnt))
    print('avg: ' + str(avg))

except Exception as e:
    print("예외가 발생했습니다.")
    print(e)

else:
    print('평균은 ' + str(avg) + ' 입니다.')


-------------------------------------------------------------------------------------
 

 

2. try ~ except ~ else ~ finally 실습

- tot = input('총점을 입력하세요.');

[실행 화면]
① 정상 처리

총점을 입력하세요: 180
과목수를 입력하세요: 2
tot: 180
cnt: 2
avg: 90.0
평균은 90.0 입니다.
성적 처리 프로그램을 종료합니다.
 
② 0을 입력한경우
총점을 입력하세요: 170
과목수를 입력하세요: 0
0으로 나누려 했습니다.
성적 처리 프로그램을 종료합니다.
  
③ 숫자를 입력하지 않은경우
총점을 입력하세요: 160
과목수를 입력하세요: two
숫자가 아닙니다.
성적 처리 프로그램을 종료합니다.
▷ oop1.Except2.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

try:
    tot = int(input('총점을 입력하세요: '))
    cnt = int(input('과목수를 입력하세요: '))
    avg = tot / cnt

    print('tot: ' + str(tot))
    print('cnt: ' + str(cnt))
    print('avg: ' + str(avg))

except ZeroDivisionError:
    print("0으로 나누려 했습니다.")
    
except ValueError:
    print('숫자가 아닙니다.')
    
else:
    print('평균은 ' + str(avg) + ' 입니다.')

finally:
    print("성적처리 프로그램을 종료합니다.")    

   

-------------------------------------------------------------------------------------

 

3. Exception class를 상속받아 새로운 Exception을 만들 수 있습니다.
예) 신용등급에 따라 대출이자의 범위를 벗어나면 예외 발생
class CreditEsception(Exception):
.....

 
 

 

728x90
반응형

'빅데이터 프로그래밍 > Python' 카테고리의 다른 글

[Python] 14. [IO] 데이터 파일을 읽어 성적, 연봉, 단풍 여행 처리 시스템을 작성하세요.  (0) 2017.08.02
[Python] 13. [IO] IO(입출력), File 클래스 다루기, 파일 이동, 디렉토리 조작, 파일 목록, 파일 복사  (0) 2017.08.02
[Python] 11. 상속(ingeritance), 부모클래스의 생성자호출, 생성자/메소드 오버로딩, 다중 상속  (0) 2017.08.02
[Python] 10. Class 선언, 클래스 멤버, 메소드, 인스턴스 멤버, 메소드의 실습, 생성자, 소멸자, 모듈 분리  (0) 2017.08.02
[Python] 09. 모듈과 패키지의 사용, import의 사용, Template  (0) 2017.08.02
'빅데이터 프로그래밍/Python' 카테고리의 다른 글
  • [Python] 14. [IO] 데이터 파일을 읽어 성적, 연봉, 단풍 여행 처리 시스템을 작성하세요.
  • [Python] 13. [IO] IO(입출력), File 클래스 다루기, 파일 이동, 디렉토리 조작, 파일 목록, 파일 복사
  • [Python] 11. 상속(ingeritance), 부모클래스의 생성자호출, 생성자/메소드 오버로딩, 다중 상속
  • [Python] 10. Class 선언, 클래스 멤버, 메소드, 인스턴스 멤버, 메소드의 실습, 생성자, 소멸자, 모듈 분리
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (407) N
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (10) N
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Rust lang
    docker
    AI 코딩 에이전트
    자바 exception
    에디터 팁
    자바 생성자
    css list
    Java Array
    React Compiler
    servlet class
    css perspective
    gitlab 설치
    nginx ssl 적용
    rust linux
    jsp include
    SSL 인증서
    spring java
    자바 배열
    브라우저 자동화
    프런트엔드
    클론코딩
    css transition
    css table
    리눅스 설치
    자바 클래스
    자바 객체 지향
    nginx
    java casting
    vscode
    css float
    proxy pass
    mysql db
    css tb
    Node
    css block
    티스토리 자동화
    ubuntu
    자바 for문
    VS Code 팁
    vue 설치
    lang rust
    러스트
    오류
    API 설계
    vue cli
    jsp parameter
    svelte
    Extension Bisect
    ssl 인증서 발급
    nginx ssl 설정
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[Python] 12. 예외처리(Excetption), try, except ~ else ~ finally 실습
상단으로

티스토리툴바