PythonBox에서 오류 처리

개요



PEPPER 앱 개발 시 오류 처리 정보
PythonBox로 처리하는 방법의 정리도.

당사에서 하고 있는 Utage Blog의 전용 기사입니다.

오류 처리 방법



PythonBox에서 오류가 발생하면,
처리되지 않은 오류의 경우 응용 프로그램이 즉시 종료됩니다.

현재 상황에서 로봇이 강제 종료되면,
유저로부터는 아무런 촉감도 없이 갑자기 종료한 것처럼 보이기 때문에,
반드시 핸들링하여 사용자에게 전달하도록 합시다.

Choregraphe에서 감지 할 수있는 오류의 경우,
오류가 발생한 상자가 빨간색입니다.
이것은 SyntaxError와 같은 경우에도 마찬가지입니다.



PythonBox에서 오류를 처리하는 몇 가지 방법이 있으므로,
이러한 방법에 대해 설명합니다.

1. try, except



일반적인 Python에서 오류 처리처럼
try: except: 로 작성하여 오류를 처리할 수 있습니다.
class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        pass

    def onUnload(self):
        pass

    def onInput_onStart(self):
        try:
            raise Exception, "Raise Error."
        except Exception as e:
            self.log(str(e))

    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()

위의 예에서는 단순히 로그를 토하고 있기 때문에,
아무것도 덮을 수는 없지만 try에서 처리하고 있습니다.
예외가 발생해도 앱이 떨어지지 않습니다.

실제로 사용하는 경우라면 아래와 같이 사용하는 것이 많아진다고 생각합니다.
class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        pass

    def onUnload(self):
        pass

    def onInput_onStart(self):
        try:
            # エラーが発生しうる処理
            self.onSucceeded()
        except Exception:
            self.onFailed()

    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()

위와 같이 raise 된 경우의 출력을 변경하여
PythonBox에서 오류를 처리할 수 있습니다.

2. PythonBox 표준 기능 사용



Box 편집 화면에서 onError 출력 추가





이렇게 하면
PythonBox에서 예외가 발생하면 onError 출력에서 ​​출력됩니다.
class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        pass

    def onUnload(self):
        pass

    def onInput_onStart(self):
        raise Exception, "Raise Error."

    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()

또한 onError의 Type을 문자열로 설정하여
raise한 Exception의 에러 메세지등의 인수를 캐릭터 라인으로 출력할 수가 있습니다.

좋은 웹페이지 즐겨찾기