선미 파이썬 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:처럼 가장 마지막에 와야 한다.(모든 오류를 처리한다고 했는데 마지막에 특정 오류를 또 처리해야 한다고 하는 것과 같으므로)