2012-06-30 3 views
3

저는 GAE를 1 년 넘게 사용 해왔고, 제가 다루기에 가장 어려운 점 중 하나는 잘 작성된 코드가 때때로 예외를 발생시킬 수 있다는 것입니다 GAE 딸꾹질 때문에.Google 애플리케이션 엔진으로 예외를 처리하는 방법

처리되지 않은 예외에 대한 적절한 절차가 이미 있습니다. 내 사용자 지정 요청 처리기가 좋은 오류 페이지를 표시하고 관리자가 전자 메일을받습니다. 그러나 이것은 나쁜 사용자 경험입니다.

내가 원하는 것은 예외를 처리하는 것이므로 적절한 조치를 취하고 일반적인 오류 페이지를 방지 할 수 있습니다.

내 질문은 :

  1. 어떻게 예외를 catch해야합니까?
  2. 어디에서 그들을 잡아야합니까?

이 모든 것에 대한 완전한 대답은 실용적이지 않지만, 가장 일반적인 상황에 대한 모범 사례를 찾고 있습니다.

알아 두어야 할 예외의 경우 가끔 official list에없는 예외가 나타납니다. 예를 들어 UnknownError를 받았습니다.

어디에서 예외를 잡을 지, 각 get/post 메서드에서 catch해야하는지 궁금합니다. 다음과 같은 내용 :

def get(self): 
    try: 
     # normal get processing 
    except SomeException: 
     # redirect to the same page to try again and fix any data if necessary 

GAE 앱의 중요한 측면이므로 더 많은 정보가 없다는 것에 놀랍니다. herehere이라는 좋은 기사가 있지만 내 질문에 대한 답변이 없습니다.

답변

0

어떤 예외가 발생합니까?

어떤 오류가 발생하는지에 따라 다릅니다. 내 경험에서 공식 목록 및 링크 된 기사의 오류를 잡는 것은 당신에게 오류 잡기의 매우 높은 수준을 얻을 것이다. 당신이 미지의 오류를 예측하려고 시도하는 것보다 쉽다는 것을 제외하고는 제네릭을 넣는 것을 넘어서 그 이상으로 나아갈 필요가 있다면.

어디서 볼 수 있습니까?

GAE 오류가 발생할 가능성이 가장 큰 부분은 db와 상호 작용할 때이므로 주변에 일부 try-except 블록을 설정하면 GAE 처리에 대한 노력에 대한 좋은 결과를 얻지 못할 것입니다. -issue 오류 처리.

링크 된 기사의 조언 외에도 실패한 작업을 작업 큐에 넣을 수 있습니다. 각 작업은 실패하기 전에 자동으로 5 번 재 시도를합니다. 작업에서 즉각적인 피드백이 필요하지 않으면 데이터 저장소 스위치 나 다른 서비스 중단을 피할 수 있습니다.