[혼공파] - Chapter 06 ~ 07

SGIYLEVOELR·2022년 2월 20일
0

구문 오류 VS 예외

  • 실행 전 발생 :: 구문 오류
  • 실행 중 발생 :: 예외

구문 오류

  • 프로그램이 실행되기도 전에 발생하는 오류
  • 구문 오류 자체가 해결되지 않으면 오류가 사라지지 않음.
    EOL(End Of Line)
  • SyntaxError :: 구문 오류 알려줌
  • EOL :: 닫는 태그에 문제가 생겼을 경우 나타나는 에러

예외

  • 프로그램 실행 중 발생하는 오류

예외 처리

조건문 사용

# 숫자를 입력받습니다.
user_input_a = input("정수 입력 >> ")

# 사용자 입력이 숫자로만 구성되어 있을 때
if user_input_a.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구문 사용

# 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("오류가 발생했습니다.")
  • 정수가 아닌 값을 입력할 경우에는 오류가 발생했습니다.
  • 정수를 입력할 경우에는 값의 계산이 출력된다.

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("No Exception")
finally:
    print("§ 프로그램 종료!! Bye~ §")
  • 정수가 아닌 값을 입력했을 경우
    - except 부분 출력
    - finally 부분 출력
  • 정수값 입력했을 경우
    - 입력한 값을 이용하여 값 출력
    - else 부분 출력
    - finally 부분 출력

p.293 - 3번

# 예외 :: ValueError
# 정수와 문자열이 합해져있음.
output = 10 + "개"

# 예외 :: ValueError
# int에 문자열이 들어감.
int("안녕하세요")

# 구문 오류 :: SyntaxError
# 닫는 태그만 있고 여는 태그는 없음.
cursor.close)

# 예외 :: IndexError
# [10]이 배열에 포함되어있지 않음.
[1, 2, 3, 4, 5][10]

0개의 댓글