0기초학습Python(19)[대상을 대상으로 개발하는 과정에서의 이상(이상 포획~관련)]

12669 단어 0 기초 학습 Python
0기초에서 파이썬(Day19) 배우기
대상을 대상으로 개발하는 과정 중 =>이상
이상
프로그램이 실행되는 과정에서 일부 오류가 발생하거나 문법 논리에 문제가 발생하면 해석기는 이 때 정상적으로 실행할 수 없고 오히려 잘못된 알림이 발생한다. 이것이 바로 이상(오류 코드나 BUG)이다.
프로그램에 이상한 결과가 나타나다
프로그램 실행 중 예외가 발생했습니다.
가벼운 기능이 실행되지 않거나 기능 실행 결과 오류
다시 전체 프로그램 붕괴!!!!
이상을 포착하다
이상을 포획하는 것은 프로그래밍에서 자주 사용하는 처리 코드에서 빈틈이 생길 수 있는 일부 기초 해결 방안이다
이상 포획 방법
try - except 구문 사용
try#          
except#  try                       

· 이런 포획 이상은 문제가 하나 있습니다. 이상을 포획하고 except의 처리 코드만 실행하지만 이상 문제를 알 수 없습니다.
지정 예외 캡처
예:
print(a)
#      
#SyntaxError: invalid character in identifier
# “:”      ,       

구문
try:
	#          
except          :
    #                    

지정한 이상을 포획할 때 발생할 수 있는 모든 이상 유형을 반드시 고려해야 한다. 만약에 발생할 수 있는 이상이 쓴'발생할 수 있는 이상 클래스'에 없으면 오류가 발생할 수 있다.
주의
  • 실행 코드의 이상 유형과 포획할 이상 유형이 일치하지 않으면 이상을 포획할 수 없음
  • 일반try 아래에 시도된 코드 한 줄만 넣기
  • 여러 지정 예외 캡처
    이상을 포획할 때 포획할 이상 유형의 이름을 except에 놓고 원조의 방식으로 구현하거나 여러 except를 사용한 다음에 서로 다른 이상 유형의 이름을 올릴 수 있다
    이상 클래스
    이상 클래스는 Python에 내장된 일부 클래스를 가리키는데, 이러한 클래스는 Python의 일부 이상 문제를 대표한다
    예외 이름
    묘사
    BaseException
    모든 이상한 기본 클래스
    SystemExit
    해석기 종료 요청
    KeyboardInterrupt
    사용자 실행 중단 (보통 입력 ^C)
    Exception
    일반 오류의 기본 클래스
    StopIteration
    교체기에 더 많은 값이 없습니다
    GeneratorExit
    생성기(generator)에 이상이 발생하여 종료를 알립니다
    SystemExit
    Python 해석기 종료 요청
    StandardError
    모든 내장 표준 이상 기류
    ArithmeticError
    모든 수치 계산 오류의 기본 클래스
    FloatingPointError
    부동 소수점 계산 오류
    OverflowError
    수치 연산이 최대 제한을 초과하다
    ZeroDivisionError
    제로(또는 콜아웃) 제로(모든 데이터 유형)
    AssertionError
    선언문 실패
    AttributeError
    대상에 이 속성이 없습니다
    EOFError
    내장 입력 없음, EOF 태그에 도달
    EnvironmentError
    운영 체제 오류의 기본 클래스
    IOError
    입출력 작업 실패
    OSError
    운영 체제 오류
    WindowsError
    시스템 호출 실패
    ImportError
    모듈/개체 가져오기 실패
    KeyboardInterrupt
    사용자 실행 중단 (보통 입력 ^C)
    LookupError
    잘못된 데이터 조회의 기본 클래스
    IndexError
    시퀀스에 이 인덱스가 없습니다 (index)
    KeyError
    맵에 이 키가 없습니다
    MemoryError
    메모리 오버플로우 오류 (Python 해석기에 치명적이지 않음)
    NameError
    선언되거나 초기화되지 않은 객체(속성 없음)
    UnboundLocalError
    초기화되지 않은 로컬 변수 액세스
    ReferenceError
    스팸이 수거된 객체에 대한 약한 참조(Weak reference)
    RuntimeError
    일반 런타임 오류
    NotImplementedError
    실현되지 않은 방법
    SyntaxError
    파이썬 구문 오류
    IndentationError
    들여쓰기 오류
    TabError
    탭과 공백 혼용
    SystemError
    일반 해석기 시스템 오류
    TypeError
    잘못된 유형 작업
    ValueError
    잘못된 매개 변수 입력
    UnicodeError
    유니코드 관련 오류
    UnicodeDecodeError
    유니코드 디코딩 오류
    UnicodeEncodeError
    유니코드 인코딩 오류
    UnicodeTranslateError
    유니코드 변환 오류
    Warning
    경고의 기본 클래스
    DeprecationWarning
    버려진 피쳐에 대한 경고
    FutureWarning
    장래의 의미를 구성하는 데 있어서 변화가 있을 것이라는 경고
    OverflowWarning
    롱 보정(long)으로 자동 승격에 대한 이전 경고
    PendingDeprecationWarning
    특성이 폐기될 것이라는 경고
    RuntimeWarning
    의심스러운 런타임 비헤이비어(runtime behavior) 경고
    SyntaxWarning
    의문의 문법 경고
    UserWarning
    사용자 코드 생성 경고
    예외 설명 정보 캡처
    구문
    try:
        #          
    except (       12,...) as   :
        print(  )
    

    포획된 영역의 코드에 나타나는 지정한 이상 문제에 대한 설명 정보를 변수에 저장하고 출력합니다
    모든 예외 캡처
    모든 예외 클래스의 상위 클래스는 Exception 클래스입니다.
    구문
    try#          
    except Exception asprint(  )
    

    이상한 else
    else는 이상이 잡히지 않으면 실행해야 하는 코드를 표시합니다
    구문
    try#          
    except12as#                    
    	print(  )
    else#                 
    

    비정상적인finnally
    finnally는 최종 결과를 표시합니다. 코드가 이상을 포착했든 안 했든 (try의 코드가 실행된 후에 except에 들어갔든 else에 들어갔든) 최종적으로finnally에 들어갔습니다.
    구문
    try#          
    except12as#                    
    	print(  )
    else#                 
    finnally:
    	#    bug      
    

    이상 전달
    비정상적인 중첩으로 이해할 수 있습니다.
    #   1+100
    import  time
    #       
    def fun():
        try:
            res = 0
            print("1"+2)
            print(time.time())
            # 0.0168831
            try:
                for i in range(1, 101):
                    res += i
                    print(res)
                    time
                    time.sleep(2)
            except:
                print("       1")
        except:
            print("       2")
        finally:
            print(time.time())
            # 0.0178795
            return res
    
    print( fun())
    

    사용자 정의 예외
    python에서 일반적으로 던지는 이상 문법은 이상 클래스 대상입니다. 이 이상 클래스 대상은 Python에서 미리 봉인된 것입니다
    구문
    tryraise
    	#      ,   except    
    except Exception as res:
    	#            
    else#                 
    finnally:
    	#    bug      
    

    수요: 나이가 0보다 적으면 안 되는 데이터 검출(0보다 적으면 이상 투하)
    class AgeInputError(Exception):
        def __init__(self, age):
            self.age = age
            self.minage = 0
    
        def __str__(self):
            return f"       {self.age},    {self.minage}"
    
    def main():
        try:
            age = int(input("     :"))
            if age < 0:
                # raise           
                raise AgeInputError(age)
        except Exception as res:
            print(res)
        else:
            print("    ")
        finally:
            print("    ")
    
    main()
    

    참고:
    python의raise 키워드는 이상을 일으키는 데 사용되며, 기본적으로 C#나 자바의throw 키워드와 같습니다
    Day19-------END

    좋은 웹페이지 즐겨찾기