문제

SO와 같은 컨트롤러 방법이 있다고 가정합니다.

@expose()
def search(self, title):
    return dict()

간다 http : // 사이트/검색/ 예외가 발생하게됩니다. typeerror : search ()는 정확히 2 인수 (1 주어)를 취합니다.

오류는 논리적이지만 오히려 더 우아하게 처리하고 싶습니다. *args 또는 ** kwargs를 사용하고 있습니까? 내가 잡을 수없는 오류를 피할 수있는 유일한 방법은 무엇입니까?

편집 : 나는 항상 title = none을 사용할 수 있다고 생각하지만 너무 많이 그 중 추악해질 수 있습니다 ...

어쨌든, 예외를 포착하거나 인수 불일치를 더 우아하게 처리 할 수있는 방법이 있습니까?

감사

도움이 되었습니까?

해결책

"비 호환"컨트롤러 메소드 서명을 지정하기위한 예외는 디버그 / 개발 모드에서만 발생합니다. 일단 개발 모드를 비활성화하면 컨트롤러 메소드가 필수 매개 변수가 없을 때 HTTP 500 오류를 보냅니다.

개발의 각 설정을 고려할 수 있습니다.

# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*
# Debug mode will enable the interactive debugging tool, allowing ANYONE to
# execute malicious code after an exception is raised.
set debug = false

나는 이것이 당신의 질문이기를 바랍니다.

컨트롤러가 여전히 작업을 수행하려는 경우 중요한 매개 변수가 부족하더라도 기본값을 정의해야합니다. 그렇지 않으면 컨트롤러가 제대로 작동 할 수 없습니다. 더 나은 질문은 다음과 같습니다. 단순히 더 좋은 오류 메시지를 원하십니까, 아니면 컨트롤러가 작업을 수행 할 수 있기를 원하십니까? 후자의 경우, 기본 매개 변수를 지정하는 것은 모범 사례입니다. *Args 및 ** kwargs는 각 방법에 대해 고객이 오류가 발생하지 않도록 내 옵션에서 매우 추악한 해킹입니다.

이 오류의 표시를 변경하려면 /controllers/error.py를 참조하십시오.

이것이 도움이 되었기를 바랍니다.

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