Se Facciata gestisce tutte le eccezioni o il lancio

0

Sto cercando di astrarre il client python elasticsearch.

Ho un documento indice del metodo

def index(self, body, id=None):
        """
        Inserts one document into elasticsaerch.
        If id is None then it will autogenerate the id.

            :param self:
            :param body:
            :param id=None:
        """
        try:
            response = self.__client.index(
                self.__index, self.__doc_type, body, id)
        except Exception as e:
            print str(e)
            print traceback.print_exc()

Elasticsearch restituisce una risposta del tipo:

{u'_type': u'category', u'_shards': {u'successful': 1, u'failed': 0, u'total': 2}, u'_index': u'catalog-2017-12-07', u'_version': 1, u'created': True, u'result': u'created', u'_id': u'AWA7N75WNaGquN-GGszi'}

Ho messo un try catch all'interno della mia classe Facade per gestire se il documento non può essere indicizzato per qualsiasi motivo.

Sono confuso riguardo

1 - registra gli errori in questa classe stessa o informa la mia classe del cliente a riguardo rilanciando l'eccezione

2 - restituisce semplicemente True / False al client

    
posta Raheel Khan 09.12.2017 - 13:32
fonte

1 risposta

6

devi sempre informare il chiamante se il tuo metodo fallisce per qualche motivo. Altrimenti, il chiamante continuerà "felicemente" e si imbatterà in strani errori di follow-up.

Consiglio vivamente di farlo con un'eccezione (sia quella originale o quella creata da te). Restituire vero / falso era lo stile vecchio stile da tempi prima che le eccezioni venissero inventate e spesso portato a codice inaffidabile dato che gli sviluppatori a volte dimenticavano di controllare "falso" ...

Se lanci la tua eccezione, assicurati che contenga ogni bit di informazione da quella originale. Sarai grato per questo quando leggi i file di registro del tuo cliente.

Generalmente, non dovresti registrare eccezioni a livelli più bassi, ma invece lanciare eccezioni e fare affidamento su un livello superiore per fare il logging. Altrimenti, finirai con la stessa eccezione registrata più volte a diversi livelli dell'applicazione. Ma per regola, ci sono delle eccezioni ...

    
risposta data 09.12.2017 - 19:55
fonte

Leggi altre domande sui tag