2015-09-09 6 views
1

Я не уверен, является ли это вопросом python или вопросом Tornado. Но я изо всех сил пытаюсь понять, как я могу справиться с исключением, если что-то не удастся. Вот фрагмент кода:Как обрабатывать исключение в Tornado

class iQHandler(myBaseHandler): 
@tornado.gen.coroutine 
def _initialize(self): 
    param1 = self.get_argument('media', None) 
    if not param1: 
     raise tornado.web.HTTPError(404) 

    # default the Output parameter to JSON format. 
    outputFormat = self.get_argument('output', 'json', False) 
    try: 
     res = yield self._findfiles(param1) 
    except Exception, e: 
     # What do I do here? 
     print ("Error in _initialize() routine --> ", e) 
     # The variable, res, doesn't have any value if there is an exception thrown. 
    raise tornado.gen.Return(res) 


@tornado.web.asynchronous 
@tornado.gen.coroutine 
def get(self): 
    response = yield self._initialize() 
    self.clear() 
    self.finish(response) 

Как будет идти ни о повышении исключение и возвращает значение обратно к предыдущей программе? Благодарю.

ответ

2

Это вопрос python. Блок try except в порядке. Вы можете сделать ререйз того же исключения, сказав raise в блоке except без каких-либо изменений после raise. То есть, заменить

raise tornado.gen.Return(res) 

по

raise 

Обратите внимание на отступа держать raise в except блоке.

Смежные вопросы