2012-08-03 1 views
0

언제든지 오류가 발생하면 try 블록을 계속 사용하지 않으면 오류가 발생합니다. 그 시점에서 (오류 동안), 오류 블록 대신 try 블록에 없다면 msg를 표시 할 수 있습니까?파이썬 Django에서 Django에서 사용자 정의 오류 메시지 msg를 제외한 모든 오류 (시도 제외하고)

내가 실제로 말하고있는 것은, 장고에 (신호와 같은) 오류 동안 활성화되어 그 msg를 인쇄하는 것이 무엇인가하는 것입니다. 제 경우에는 아약스 요청입니다. 그래서 뭔가를 try 블록 안에 넣지 않고 오류가 발생하면 오류 메시지를 보내야합니다. (다른 서버에 아약스 호출을 만들어야합니다. 서버)에 "오류가 발생했습니다"라고 표시됩니다.

+1

일반적으로 오류 메시지가 사용자에게 전파되는 것을 원하지 않으며 예외가 잡히지 않고 발생하면 자연스럽게 프로세스가 중지되므로 응답이 없습니다. 예외를 잡기 위해 [Sentry] (https://github.com/dcramer/sentry/)를 설정할 수 있습니다. 오류 및 로깅 등을 모니터링하는 훌륭한 방법입니다. –

답변

0

:

try: 
    raise Exception("This is an exception") 
except Exception: 
    print ("Exception raised, notify server") 
    #re-raise exception 
    raise 

이 뭔가를 인쇄합니다. 오히려 오류가 발생하면 500 오류 페이지를 리턴합니다. Django가 디버그 모드에 있으면 추적을 제공합니다. 다른 서버가 지능형이면 200 개의 메시지 대신 500 개의 오류 메시지가 있음을 알 수 있습니다. Django에서 루트 디렉토리에 "500.html"을 정의하여 오류를 처리하거나 기본 Django 템플릿을 사용할 수 있습니다. GLHF

0

필자가 아는 한, 파이썬에서 기본 예외 처리를 전역 적으로 대체하는 방법은 없습니다. try/except 블록을 사용하여 오류를 포착하고 일부 코드를 실행 한 다음 예외를 다시 발생시킬 수 있습니다.

코드를 try 블록에 넣고 except 블록에 메시지를 인쇄 한 다음 raise을 호출하여 catch 된 예외를 다시 발생 시키십시오.

예는 : 오류가 발생하면, 그것은 실제로는 자동으로 사용자에게 전파되지 않습니다, 장고에서

Exception raised, notify server 
Traceback (most recent call last): 
    File "[file]", line [line], in [module] 
Exception: This is an exception 
+0

실제로 있습니다. 모든 예외를 잡으려면 모든 코드 (또는 모든 코드를 포함하는 함수)를 제외하고 시도하십시오. –

+0

그래, 그렇지만 특정 오류 메시지를 표시하고 정상적으로 복구 할 수있는 능력을 상실하게됩니다. 코드에서 예외가 발생한 위치를 알 수 없습니다. – pR0Ps

관련 문제