문제

일부 조건에서 다음 오류가 발생하는 모듈을 가져오고 있습니다.

가져 오기 전에 루트 액세스를 확인할 수 있다는 것을 알고 있지만 향후 참조를 위해 시도/제외 명령을 통해이 풍부한 종류의 오류를 잡는 방법을 알고 싶습니다. 이 runtimeerror와 제기 될 수있는 다른 사람들을 구별 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

가져 오기 전에 루트 액세스를 확인할 수 있다는 것을 알고 있지만 향후 참조를 위해 시도/제외 명령을 통해이 풍부한 종류의 오류를 잡는 방법을 알고 싶습니다. 이 runtimeerror와 제기 될 수있는 다른 사람들을 구별 할 수있는 방법이 있습니까?

특정 조건으로 인해 오류가 발생하면 오류를 잡는 가장 쉬운 방법은 조건을 테스트하는 것이며보다 구체적인 오류를 직접 제기 할 수 있다고 생각합니다. 오류가 발생하기 전에 모든 '오류'가 존재하면이 경우 환경에 문제가 있기 때문에.

나는 위의 것들에 동의합니다 - 오류와 일치하는 텍스트는 일종의 끔찍한 전망입니다.

다른 팁

예외의 속성을 확인하여 다른 가능한 다른 것과 차별화 할 수 있습니다. RuntimeError 예외. 예를 들어, 사전 정의 된 메시지 텍스트와 일치하지 않으면 오류를 다시 표시하십시오.

    try:
        import pypatred
    except RuntimeError,e:
        if e.message == 'RuntimeError: pyparted requires root access':
            return 'pyparted - no root access'
        raise

물론, 직접 텍스트 비교는 단지 예일뿐입니다. 포함 된 하위 문자 또는 정규식을 검색 할 수 있습니다.

그것은 주목할 가치가 있습니다 .message 예외의 속성입니다 Python 2.6으로 시작하는 감가 상승. 텍스트를 찾을 수 있습니다 .args, 대개 args[0].

... 2.6의 경우 message 속성은 더 이상 사용되지 않습니다 args 기인하다.

try:
    import pyparted
except RuntimeError:
    print('RuntimeError is raised')
    raise

튜토리얼에서 예외 처리.

이 상황은 생산해야합니다 ImportError 제 생각에는. 그리고 당신은 직접 할 수 있습니다 :

try:
    import pyparted
except RuntimeError as e:
    raise ImportError(e)

예.

   try:
        import module
   except RuntimeError:
         pass

수입은 다른 진술로 해석되며 특별하지 않습니다. 당신은 할 수 있습니다

if condition:
     import module
try:
   import ...
except RuntimeError:
   # Do something

런타임 에러 다른 범주에 속하지 않는 오류가 감지 될 때 발생

def foo():
   try:
      foo()
   except RuntimeError, e:
      print e
      print " Runtime Error occurred due to exceeded maximum recursion depth "

그것이 우리가 Python의 초과 재귀 한계로 인한 runtimeerror를 잡는 방법입니다.

그리고 재귀 한계를 통해 기능을 호출하려면 다음을 수행 할 수 있습니다.

import sys
def foo():
     try:
        foo()
     except RuntimeError, e:
        sys.setrecursionlimit(1200)
        foo()

그러나 항상 재귀 한계를 변경하는 것이 권장되지 않지만 재귀 한계의 매우 작은 변화가 허용됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top