Een uitzondering registreren in Java?

Ik gebruik commons die inloggen in een Java-applicatie en ik wil de uitzondering van de stacktracering registreren.

catch( Exception exception ) {
         logger.error( "FailedCreateActivityFunction Exception Occured : " , exception );
         throw new EngineException( getMessage( ERROR_FailedCreateActivityFunction, FunctionName ), exception );
      }

Gooit dit de uitzondering twee keer op? Zo ja, hoe repareer je het?

Whats the difference between using it as this way using + exception instead of , exception

logger.error( "FailedCreateActivityFunction Exception Occured : " + exception );
2
ja ru de
het verschil van het gebruik van + exception in plaats van, exception is te zien bij de "public void error" van java doc (Object message, Throwable t) "de error-functie kan alleen message of message + throwable accepteren
toegevoegd de auteur goravine, de bron

2 antwoord

Nee, het zal geen uitzondering twee keer gooien. Deze code genereert alleen EngineException.

Vermijd het loggen en gooien van uitzonderingen, doe maar één ding. Log en gooi is een antipatroon. U kunt hier meer lezen over het afhandelen van uitzonderingen: Antipatterns voor uitzonderingsafhandeling .

Het verschil tussen deze twee manieren om de foutmethode uit te voeren is:

  • in logger.error (String-bericht, Throwable t) - u slaagt voor een object, dus het logging-framework heeft meer informatie en kan u volledige stacktracering laten zien
  • in logger.error (String-msg) - u maakt een String, er wordt geen aanvullende informatie doorgegeven aan het logging framework
4
toegevoegd
Kunt u aangeven welke weg ik moet gebruiken in dit scenario + uitzondering of , uitzondering ? Een andere manier om die stacktrace naar de logger te duwen?
toegevoegd de auteur Debajyoti Das, de bron
Over het algemeen moet u , exceptie gebruiken. En voor zover ik weet, pushen alle goede logging frameworks stack tracering naar logger wanneer je het op die manier gebruikt.
toegevoegd de auteur mleczey, de bron

Nee, hij gooit het niet twee keer.

De eerste methode zal uw bericht EN de uitzondering op de stapel afdrukken.

De tweede methode zal alleen uw bericht EN het uitzonderingsbericht afdrukken (throwable.toString() aanroepen dat geeft een korte beschrijving van de fout ), zonder de stacktrace.

1
toegevoegd