2016-08-04 86 views
0

Nehmen wir ein Beispiel.Ist es schlecht, mehr als eine Ausnahme in eine Methodensignatur zu werfen?

public String myMethod(String s) throws ExceptionA, ExceptionB { 

} 

Ist es schlecht, diese Art von Mehrfachausnahme von einer Methode zu werfen. d.h. müssen wir das unten mit einem Wrapper vereinfachen?

public String myMethod(String s) throws ExceptionC{ 
    try{ 
    }catch(ExceptionA | ExceptionB e){ 
     throw new ExceptionC(e); 
    } 
} 

Wenn ja, wie kann ich die Ursache Ausnahme in höhere Level-Klassen finden sich einzuloggen, wenn wir Blase die Ausnahme ganz nach oben?

+0

Statt nur eine Ausnahme zu "werfen"; versuche immer den Code und 'catch' wenn es eine Ausnahme gibt. – pilkington

+0

Ich mag es so zu denken: Würfe macht dein Leben und Code sauberer, benutze es, wenn du nicht vorhast, irgendeinen benutzerdefinierten Fang zu machen. Try-Catch für, wenn Sie tatsächlich etwas tun werden, abgesehen von dem Drucken des Stack-Trace in der Fanganweisung. – SomeStudent

Antwort

2

Ist es schlecht, diese Art von mehreren exceptios von einer Methode zu werfen haben

Nein, wenn Sie überprüft Ausnahmen verwenden, ist dies völlig normal. Es zeigt an, dass zwei verschiedene außergewöhnliche Dinge schief gehen können, und ermöglicht es, dass Anrufe auf zwei unterschiedliche Arten leicht mit diesen beiden unterschiedlichen Ausnahmezuständen umgehen können.

+0

schöne Resonanz. Was ist, wenn ich dich frage, welcher Weg ist besser? –

+1

@SupunWijerathne: Ich würde sagen, dass fordert eine Meinung, und respektvoll abzulehnen, zu kommentieren. :-) Es gibt ein Camp, bei dem sich die geprüften Ausnahmen als schlecht erweisen, einschließlich (zum Beispiel) die Designer von C#. Es gibt ein anderes Camp, das sich gut fühlt, einschließlich (zum Beispiel) die Designer von Java. Sie können sich selbst aussuchen. ;-) –

+0

eigentlich habe ich gefragt, was ist der bessere Code-Stil zwischen 2 Codes, die ich gepostet habe. :) und könntest du bitte auch erwähnen, welche Alternative die Verwendung von C# -Designern ist? :) –

2

Es ist eine vollkommen akzeptable Praxis, zwei verschiedene Arten von Ausnahmen zu werfen. Dies ist ein direkter Weg der Methode, die erklärt, dass es mehrere Dinge gibt, die hier schief gehen können, und denen, die sie benutzen, die Möglichkeit gibt, sie getrennt zu behandeln, wenn er will.

2

Ich sehe nichts falsch mit dem Auslösen mehrerer Arten von Ausnahmen in einer Methode, die Alternative würde die Dinge komplizieren. Wenn Sie verschiedene Ausnahmen auslösen, kann der Aufrufer sie in einem lesbaren Stück Code auf andere Weise behandeln, ohne die Ursache/etc. Beachten Sie, dass es immer noch gut sein kann, es aus verschiedenen Gründen in eine andere Ausnahme zu packen, wie das Hinzufügen von Informationen, aber das ist ein anderes Thema.