Scheitern vs. Erhöhung in Ruby : Sollen wir wirklich glauben, dass der style-guide?
Ruby bietet zwei Möglichkeiten, um zu bewirken, dass eine Ausnahme programmatisch: raise
und fail
sowohl als Kernel
Methoden. Nach den Unterlagen, Sie sind absolut gleichwertig.
Aus Gewohnheit, habe ich nur raise
so weit. Nun fand ich mehrere Empfehlungen (zum Beispiel hier), zu verwenden raise
Ausnahmen gefangen werden, und fail
für schwerwiegende Fehler, die sind nicht dazu gedacht, bearbeitet zu werden.
Aber macht es wirklich Sinn? Beim schreiben einer Klasse oder Modul, und zu einem problem führen, tief im inneren, die Ihr signal von fail
Ihre Programmier-Kollegen, die überprüfung der code, vielleicht glücklich zu verstehen, Ihre Absichten, sondern die person, die mit mein code wird wahrscheinlich nicht Blick auf meinen code und hat keine Möglichkeit zu wissen, ob die Ausnahme war, verursacht durch eine raise
oder durch fail
. Daher mein vorsichtiger Verwendung von raise
oder fail
können, haben keinen Einfluss auf seine Entscheidung, ob Sie sollte oder sollte nicht umgehen.
Könnte jemand sehen, Fehler in meinen Argumenten? Oder gibt es andere Kriterien, die könnten mich benutzen wollen fail
statt raise
?
- Ich denke, dass diese Frage behandelt werden könnten als off-topic, da es nicht bestehen, ein bestimmtes problem, also meiner Meinung nach ist es besser geeignet, zum Beispiel auf Programmierer
- bei verweisen auf andere Websites, ist es oft hilfreich, zu zeigen, dass cross-posting ist verpönt
- Tatsächlich, das problem entstand aus einem spezifischen problem (ich Schreibe eine Bibliothek und möchten eine Ausnahme auslösen, wenn ein argument an eine Methode übergeben wird out-of-range), aber ich dachte, dass die Bereitstellung dieser Informationen nicht helfen, die Frage zu beantworten. Danke aber für die Kommentare.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nicht das, was die offiziellen style-guide oder dem link, den Sie sagen auf die Frage.
Was hier gemeint ist, ist die Verwendung
raise
nur inrescue
Blöcke. Aka verwendenfail
wenn Sie etwas sagen wollen ist scheitern und verwendenraise
wenn erneute auslösen eine Ausnahme.Als für die "ist es egal" Teil - es ist nicht einer der am meisten hardcore strikt befolgt Regeln, aber man könnte das gleiche argument für jede Konvention. Sollten Sie in dieser Reihenfolge:
Idealerweise, die drei sollten gleich sein.
Update: Als der diese PR (Dezember 2015), die convention ist immer
raise
.raise
stattfail
es als das erneute auslösen nicht vorangestellt werdenrescue
.Ich hatte einmal ein Gespräch mit Jim Weirich über diese sehr Sache, ich habe da früher immer
fail
wenn meine Methode ist ausdrücklich versagt aus irgendeinem Grund, undraise
zu re-Ausnahmen ausgelöst.Hier ist ein post mit einer Nachricht von Jim (fast wörtlich, was er sagte, zu mir in person:
http://www.virtuouscode.com/2014/05/21/jim-weirich-on-exceptions/
Hier ist der relevante text aus dem post, ein Zitat zugeschrieben, Jim:
Ich weiß, dass es viele Stil-Führer, die nicht Stimmen (die style guide verwendet RoboCop, zum Beispiel). I don ' T care. Jim hat mich überzeugt.