선미 파이썬 0326 11일차

azuremei
이동: 둘러보기, 검색
'''
    [예외처리]
    -개발자가 의도치 않은 오류 발생에 대한 처리
     >프로그램 중단 후 오류 메세지 발생
     -try, except 문을 사용하여 예외처리를 한다.

[기본 구조]
try :
    수행문
except :
    try에서 오류가 날 때 수행할 수행문
'''
'''
print("하하하1")
#print(a)
print("하하하2")
#오류가 나게 되고 다음 코드인 하하하2의 print는 수행되지 않는다.

print("=========exception=======")


try : # 오류가 발생할 것으로 예상되는 코드에 트라이를 넣는다.
    #오류 발생 예상 지역
    input_num=(int(input("숫자입력 : "))
    print("입력된 숫자 :", input_num)
except : # 오류 발생했을 때만 수행
        #오류 발생시 
    print("숫자만 입력하세요.")

#변수를 트라이구문 전에 시행해보자
#필기참조


#finally : 무조건 수행되는 구문
x=10
result=0
#프로그래밍 언어에서 '무조건' 어떠한 수로 나누면 오류가 난다!
try :
    #사용자가 0을 넣으면 예상된다.
    input_num=int("10을 어떤 수로 나눌까요? : ")
    result=x/input_num #입력된 숫자를 나눔
    print("나는 결과 :", result)
except :
    #dhfb qkftod tl dPdhlcjfl
    print("0dmfh sksnf tn djqttmqslek.")
finally :
    #오류가 발생하든 안하든 무조건 수행한다
    #예외처리 구문(트라이, 익셉트)의 종료!)
    #공통적으로 처리하고 싶은 코드가 있으면 finally에 작용
'''

#어떤 오류인지 확인하는 방법(구분)
'''
num1=0
num2=0
#두 수를 입력받아서 나눒것임(두번째 숫자가 0이면 오류)
try :
    num1, num2 = map(int, input("두 수 입력 : ").split())
    result=num1/num2 #num2는 0을 입력하지 않아야 하는데 숫자가 0이거나 두번째 0이면 오류! 2가지 경우

    #0으로 나눈 오류에 대해서만 except문으로 처리, 다른 오류는 처리되지 않는다.
except ValueError as e2 : #as는 sql의 as와 같다
    print(e2)
    print("숫자를 입력하세요.")
    #except 뒤에 오류명을 사용하면 해당되는 오류를 구분할 수 있다.(if의 종류처럼) 예)except ValueError/Zero...error
''''
try :
    name = "abcd"
    print(dd)
except NameError :
    print("NameError")
    print("없는 변수입니다.")
except :
    #오류를 지정하지 않으면 모든 오류는 except에서 지정된다.
    print("알 수 없는 오류 발생")
#위와 같은 except 구조는 조건문에서 if-elif-else의 구조에서와 같다. 모든 오류를 처리하는 except:는 else:처럼 가장 마지막에 와야 한다.(모든 오류를 처리한다고 했는데 마지막에 특정 오류를 또 처리해야 한다고 하는 것과 같으므로)