[python] 구문오류 / 예외

PurinYun·2023년 11월 13일
0

AIffel

목록 보기
9/75

구문 오류 (Syntax Error)

프로그램 실행 전, 문법에 맞지 않아서 오류가 나는 것.

EOL (Error Of Line)

런타임 오류 = 예외

프로그램 실행 후 나온 에러

예외 처리 방법

조건문

속도가 빠르나 모두 예측하여 조건문 처리 해야함

try except 구문

속도는 느리나 예외발생사항을 모두 예측 못해도 처리 가능

cf. 정수인지 아닌지 확인하여 출력

num = input("문자열을 입력하세요: ")

# 문자열에서 공백 제거
num = num.replace(" ", "")

# 정수인지 확인
if num.isdigit():
    print("입력한 문자열은 정수입니다.")
else:
    print("입력한 문자열은 정수가 아닙니다.")

음의 정수까지 판단할수 있도록

num = input("문자열을 입력하세요: ")

# 문자열에서 공백 제거
num = num.replace(" ", "")

# 정수인지 확인
if num.isdigit():
    print(f'입력한 숫자는 {num}입니다.')
    
    
elif num.lstrip():
	print(f'입력한 숫자는 {num}입니다.')
    
else:
    print("정수가 아닙니다.")

lstrip 예시 (1,2,3출력하는 코드)

ex = ['-1', '-2', '-3']
for i in range(len(ex)):
	print(ex[i].lstrip("-"))

< 1. try except 예시>

try:
	num = float(input('숫자를 입력하세요 : '))
    print(f'입력한 숫자는 {num}입니다.')
    
except:
	print('숫자가 아닙니다.')

< 2. pass : 일단 프로그램 강제 종료를 막음>

try:
	num = float(input('숫자를 입력하세요 : '))
    print(f'입력한 숫자는 {num}입니다.')
    
except:
	pass

print('끝!')

< 3. try except else 구문>

#입력값을 예외걱정 없이 float함수를 씌움
try:
	num = float(input('숫자를 입력하세요 : '))
    
#try에서 예외발생시 실행코드
except:
	print('숫자가 아닙니다.')
    
#try에서 예외 미발생시 실행코드
else:
	print(f'입력한 숫자는 {num}입니다.')
    

< 4. finally: 예외 관계없이 무조건 실행되는 코드>

#입력값을 예외걱정 없이 float함수를 씌움
try:
	num = float(input('숫자를 입력하세요 : '))
    
#try에서 예외발생시 실행코드
except:
	print('숫자가 아닙니다.')
    
#try에서 예외 미발생시 실행코드
else:
	print(f'입력한 숫자는 {num}입니다.')
    
#finally 구문 추가
finally:
	print('*' * 25)
    print('프로그램이 일단 끝났습니다.')
    

예외 고의 발생

raise 구문

raise Exception('에러를 일부러 발생시킴')

Exception: 에러를 일부러 발생시킴

자주 뜨는 에러 종류

1) SyntaxError: 잘못된 문법
2) NameError: 참조변수 없음
3) IndexError: 인덱스 범위 벗어남
4) ValueError: 참조 값이 없음
5) KeyError: 키 없음 에러
6) AttriobeteError: 모듈, 클래스의 잘못된 속성을 사용함
7) FileNotFoundError: 파일 못 찾음
8) TypeError: 타입 안 맞음
9) ZeroDivisionError: 0으로 나눌 수 없음

[1] try구문은 단독으로 사용 불가, except/finally 구문과 함께 사용하기
[2] else 구문은 항상 except 뒤에 사용해야 함

(1) try + except
(2) try + except + else
(3) try + except + finally
(4) try + except + else + finally
(5) try + finally

profile
Fantivation

0개의 댓글