2014-09-20 7 views
0

Я использую Google App Engine с Python и сталкивается с ошибками, как это:Google App Engine (Python SDK) - Как перехватывать исключения DB

raise BadValueError('Property %s is not multi-line' % self.name) 
BadValueError: Property title is not multi-line 
ERROR 2014-09-20 16:01:23,969 wsgi.py:278] 
Traceback (most recent call last): 

Я импортированные модуль DB: from google.appengine.ext import db

И я пытаюсь тихо (на данный момент) поймать ошибку с кодом, как это:

try: 
    r.put() 
except db.Error: 
    pass 

Но ошибка продолжает нарушать выполнение программы. Что я делаю не так? (? Или не делать)

Благодаря ...

Вот полный отслеживающий:

Traceback (most recent call last): 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 1511, in __call__ 
    rv = self.handle_exception(request, response, e) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 1505, in __call__ 
    rv = self.router.dispatch(request, response) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher 
    return route.handler_adapter(request, response) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 1077, in __call__ 
    return handler.dispatch() 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 547, in dispatch 
    return self.handle_exception(e, self.app.debug) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.3/webapp2.py", line 545, in dispatch 
    return method(*args, **kwargs) 
    File "/Users/me/myapp/myapp.py", line 191, in get 
    date_last_modified = date_last_modified) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 970, in __init__ 
    prop.__set__(self, value) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 614, in __set__ 
    value = self.validate(value) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 2847, in validate 
    raise BadValueError('Property %s is not multi-line' % self.name) 
BadValueError: Property column_series is not multi-line 
+0

Ну, для начала вы поймаете неправильное исключение. Исключением является «BadValueError». –

+0

@BurhanKhalid: 'db.BadValueError' является подклассом' db.Error'. –

+0

У вас есть правильное исключение; но вы ловите его в нужном месте *? Пожалуйста, покажите нам полную трассу. –

ответ

0

Исключение возникает при установке атрибута; вы можете увидеть последнюю часть строки, в которой вы должны поймать исключение в коде в TRACEBACK:

File "/Users/me/myapp/myapp.py", line 191, in get 
    date_last_modified = date_last_modified) 

Вы создании или обновлении экземпляра там, и там исключения должны быть пойманы, а не при вызове r.put().

+0

Ах, имеет смысл. Спасибо!! – dmc7z