5주차 과제
기본미션 : 구문 오류와 예외의 차이 설명하기 / 혼공 용어 노트에 나만의 언어로 객체, 클래스, 인스턴스, 생성자, 메소드 보충 설명쓰고 인증샷
오류 종류
- 구문 오류(syntax error) : 프로그램 실행 전에 발생하는 오류
- 예외(exception) 또는 런타임 오류(runtime error) : 프로그램 실행 중에 발생하는 오류
구문 오류 : SyntaxError, 구문에 문제가 있어 프로그램이 실행조차 되지 않는 오류. 해결을 위해 코드를 제대로 수정해야 함
print("프로그램이 시작되었습니다")
print("프로그램이 시작되었습니다)
예외 : 예외 또는 런타임 오류는 실행 중에 발생하는 오류. 해결법도 구문 오류와 다르지 않다. 코드를 제대로 작성하면 된다.
print("프로그램이 시작되었습니다")
list_a[1]
기본 예외 처리 : 예외를 해결 하는 모든 것
- 조건문을 사용하는 방법(기본 예외 처리)
- try 구문을 사용하는 방법
예외 상황 확인하기
-> 예를 들어 정수를 입력하라했는데, 정수가 아닌 수를 입력하는 상황 고려하기
조건문으로 예외 처리하기
#숫자 입력
user_input_a = input("정수입력> ")
#사용자 입력이 숫자로만 구성되어 있을 때
if user_input_a.isdigit(): #isdigit() 함수를 사용해서 숫자로만 구성된 글자인지 확인
#숫자로 변환
number_input_a = int(user_input_a)
#출력
print("원의 반지름:", number_input_a)
print("원의 둘레:", 2*3.14*number_input_a)
print("원의 넓이:", 3.14,*number_input_a * number_input_a)
else:
print("정수를 입력하지 않았습니다")
try except 구문
- 예외가 발생할 가능성이 있는 코드를 모두 try 구문 안에 넣고 예외가 발생했을 때 실행할 코드를 모두 except 구문 안에 넣으면 됨
#try except 구문으로 예외를 처리합니다
try:
#숫자로 변환합니다.
number_input_a = int(input("정수 입력> "))
#출력합니다
print("원의 반지름:", number_input_a)
print("원의 둘레:", 2*3.14*number_input_a)
print("원의 넓이:", 3.14 * number_input_a * number_input_a)
except:
print("무언가 잘못되었습니다.")
try except else 구문
- try except 구문 뒤에 else 구문을 붙여서 '예외가 발생하지 않았을 때 실행할 코드'를 지정할 수 있음
#try except else 구문으로 예외를 처리함
try:
#숫자로 변환
number_input_a = int(input("정수 입력> "))
except:
print("정수를 입력하지 않았습니다")
else:
#출력
print("원의 반지름:", number_input_a)
print('원의 둘레:', 2*3.14*number_input_a)
print("원의 넓이:", 3.14*number_input_a*number_input_a)
finally 구문
- 예외가 발생하든 발생하지 않은 무조건 실행할 때 사용하는 코드
#try except 구문으로 예외를 처리
try:
#숫자를 변환
number_input_a = int(input("정수 입력> "))
#출력함
print("원의 반지름:", number_input_a)
print("원의 둘레:", 2*3.14*number_input_a)
print("원의 넓이:", 3.14*number_input_a * number_input_a)
except:
print("정수를 입력해달라고 했잖아요?!")
else:
print("예외가 발생하지 않았습니다")
finally:
print("일단 프로그램이 어떻게든 끝났습니다.")
try, except, finally 구문의 조합
- try 구문은 단독으로 사용할 수 없으며 반드시 except 구문 또는 finally 구문과 함께 사용해야 한다
- else 구문은 반드시 except 구문 뒤에 사용해야 한다
예외 객체 : 예외가 발생하면 예외와 관련된 정보가 생기는데. 이를 예외 객체라 한다
#try except 구문으로 예외를 처리함
try:
#숫자로 변환함
number_input_a = int(input('정수 입력> '))
#출력함
print("원의 반지름: ", number_input_a)
print("원의 둘레:", 2*3.14*number_input_a)
print("원의 넓이:", 3.14*number_input_a * number_input_a)
except Exception as exception:
#예외 객체를 출력
print("type(exception):", type(exception))
print("exception:", exception)
-> 예외 객체의 자료형은 Value Error, 내용은 invalid literal for int() with base 10: '<입력한 문자열>' 이 출력됨
예외 구분하기
- 예외가 발생할 수 있는 코드 예
#변수를 선언
list_number = [52, 273, 32, 72, 100]
#try except 구문으로 예외를 처리함
try:
#숫자를 입력받음
number_input = int(input("정수 입력> "))
#리스트의 요소를 출력
print("{}번째 요소: {}".format(number_input, list_number[number_input]))
except Exception as exception:
#예외 객체를 출력
print("type(exception):", type(exception))
print("exception:", exception)
1. 정상적으로 정수를 입력한 경우 : 예외 발생하지 않음
2. 정수로 변환될 수 없는 값을 입력한 경우 : ValueError 발생
3. 정수를 입력하지만 리스트의 길이를 넘는 인덱스를 입력한 경우 : IndexError 발생
-예외 구분하기
#변수를 선언
list_number = [52, 273, 32, 72, 100]
#try except 구문으로 예외를 처리함
try:
#숫자를 입력받음
number_input = int(input("정수 입력> "))
#리스트의 요소를 출력
print("{}번째 요소: {}".format(number_input, list_number[number_input]))
except ValueError:
#ValueError가 발생하는 경우
print("정수를 입력해 주세요")
except IndexError:
#IndexError가 발생하는 경우
print("리스트가 인덱스를 벗어났어요")
-예외 구분 구문과 예외 객체 : except 구문 뒤에 예외 객체를 붙여 활용할 수 있음. 마찬가지로 as 키워드를 사용하면 됨
#변수를 선언
list_number = [52, 273, 32, 72, 100]
#try except 구문으로 예외를 처리함
try:
#숫자를 입력받음
number_input = int(input("정수 입력> "))
#리스트의 요소를 출력
print("{}번째 요소: {}".format(number_input, list_number[number_input]))
except ValueError as exception:
#ValueError가 발생하는 경우
print("정수를 입력해 주세요")
print("exception:", exception)
except IndexError as exception:
#IndexError가 발생하는 경우
print("리스트가 인덱스를 벗어났어요")
print("exception:", exception)
모든 예외 잡기 : else 구문처럼 마지막에는 모든 예외의 부모라할 수 있는 Exception을 넣어서 프로그램이 죽지 않게하는 것이 좋다.
#변수를 선언
list_number = [52, 273, 32, 72, 100]
#try except 구문으로 예외를 처리함
try:
#숫자를 입력받음
number_input = int(input("정수 입력> "))
#리스트의 요소를 출력
print("{}번째 요소: {}".format(number_input, list_number[number_input]))
예외.발생해주세요()
except ValueError as exception:
#ValueError가 발생하는 경우
print("정수를 입력해 주세요")
print("exception:", exception)
except IndexError as exception:
#IndexError가 발생하는 경우
print("리스트가 인덱스를 벗어났어요")
print("exception:", exception)
except Exception as exception:
print("미리 파악하지 못한 예외가 발생했습니다.")
print(type(exception), exception)
raise 구문 : 아직 구변되지 않은 부분이므로 일부러 예외를 발생시켜 프로그램을 죽게 만들어 잊어버리지 않도록 하는 키워드. 예외를 강제로 발생시키는 기능을 함
#입력을 받습니다
number = input("정수 입력> ")
number = int(number)
#조건문 사용
if number > 0:
#양수일 때: 아직 미구현 상태
raise NotImplementedError
else:
#음수일 때: 아직 미구현 상태
raise NotImplementedError
교육도서 : 혼자 공부하는 파이썬 https://book.naver.com/bookdb/book_detail.nhn?bid=15028688
광고 수익은 기부 활동에 사용됩니다
정보를 얻으신 분들은 광고 클릭 부탁드려요 :)
'Programming > Python' 카테고리의 다른 글
혼자 공부하는 파이썬 (0) | 2021.08.31 |
---|---|
[혼공챌린지]python scraping (0) | 2021.08.09 |
[혼공챌린지]python 함수 (0) | 2021.07.26 |
[혼공챌린지]python 자료형 (0) | 2021.07.19 |
[혼공챌린지]python 조건문 (0) | 2021.07.10 |