복붙노트

[PYTHON] TypeError : 예외는 구식 클래스이거나 str이 아닌 BaseException에서 파생 된 것이어야합니다.

PYTHON

TypeError : 예외는 구식 클래스이거나 str이 아닌 BaseException에서 파생 된 것이어야합니다.

다음은 내 코드입니다.

test = 'abc'
if True:
    raise test + 'def'

그리고 이것을 실행하면 TypeError를 얻을 수 있습니다.

TypeError: exceptions must be old-style classes or derived from BaseException, not str

그렇다면 시험은 어떤 종류의 시험입니까?

해결법

  1. ==============================

    1.raise의 유일한 인수는 예외가 발생했음을 나타냅니다. 예외 인스턴스 또는 예외 클래스 (Exception에서 파생 된 클래스) 여야합니다.

    raise의 유일한 인수는 예외가 발생했음을 나타냅니다. 예외 인스턴스 또는 예외 클래스 (Exception에서 파생 된 클래스) 여야합니다.

    이 시도:

    test = 'abc'
    if True:
        raise Exception(test + 'def')
    
  2. ==============================

    2.str을 올릴 수 없습니다. 예외 만 제기 할 수 있습니다.

    str을 올릴 수 없습니다. 예외 만 제기 할 수 있습니다.

    그래서, 당신은 그 문자열로 예외를 만들고 그것을 높이는 것이 낫습니다. 예를 들어 다음과 같이 할 수 있습니다.

    test = 'abc'
    if True:
        raise Exception(test + 'def')
    

    또는

    test = 'abc'
    if True:
        raise ValueError(test + 'def')
    

    희망은 도움이됩니다.

  3. ==============================

    3.그것은 예외가되어야합니다.

    그것은 예외가되어야합니다.

    당신은 다음과 같이하고 싶다.

    raise RuntimeError(test + 'def')
    

    파이썬 2.5와 그 이하 버전에서 코드는 작동 할 것이고, 그때 문자열을 예외로 올릴 수 있습니다. 이는 매우 나쁜 결정이었고 2.6에서 제거되었습니다.

  4. from https://stackoverflow.com/questions/11497234/typeerrorexceptions-must-be-old-style-classes-or-derived-from-baseexception-no by cc-by-sa and MIT license