Behandlung mehrerer Fehler in go

9

Ich bin neu zu gehen und die Fehlerbehandlung zu finden, um extrem ausführlich zu sein. Ich habe die Gründe dafür gelesen und stimme dem weitgehend zu, aber es gibt einige Stellen, wo es mehr Code zu geben scheint, um mit Fehlern umzugehen, als tatsächlich die Arbeit zu machen. Hier ist ein (erfundenes) Beispiel, wo ich "Hallo Welt!" in cat und lesen und drucken Sie die Ausgabe. Im Grunde hat jede Zeile drei weitere, um den Fehler zu behandeln, und ich behandle eigentlich gar nichts.

%Vor%

Gibt es einen idiomatischen, sauberen Weg, damit umzugehen? Ich fühle mich, als würde ich etwas vermissen.

    
David Stalnaker 20.04.2013, 23:01
quelle

4 Antworten

7

Natürlich müssen wir alle Fehler behandeln; Wir können sie nicht einfach ignorieren.

Versuchen Sie zum Beispiel, das Beispiel weniger künstlich zu machen,

%Vor%

Ausgabe:

%Vor%
  

Fehlerbehandlung und Los

     

In Go ist die Fehlerbehandlung wichtig. Das Design der Sprache und   Konventionen ermutigen Sie, explizit nach Fehlern zu suchen, wo sie sich befinden   auftreten (im Unterschied zu der Konvention in anderen Sprachen des Werfens)   Ausnahmen und manchmal fangen sie). In einigen Fällen macht das Go   Code ausführlich.

    
peterSO 20.04.2013, 23:56
quelle
0

Für idiomatische, beziehen Sie sich auf peterSO 's Antwort, die anfängt, das Thema der Rückgabe von Fehlern zu berühren, und dies kann weiter durch Umhüllen Fehler mit einigen zusätzlichen Informationen in Bezug auf den Kontext des Aufrufs innerhalb Ihrer Anwendung genommen werden .

Es kann Fälle geben, in denen iterative Läufe über eine Operation etwas generalisierteres mit einigen ungewöhnlich kreativen Beispielen im folgenden Link rechtfertigen könnten, aber als ich diese Frage kommentierte, war es ein schlechtes Codebeispiel: Go - mehrere Fehler elegant behandeln?

Unabhängig davon, dass Sie nur das Beispiel betrachten, das Sie haben, ist dies nichts weiter als ein einmaliges in main, also behandeln Sie es so, wenn Sie nur versuchen, herumzubasteln, wie man es in einer interaktiven Python-Konsole machen kann / p> %Vor%     

dskinner 21.04.2013 01:06
quelle
0

Ich habe gerade ein paar hundert Zeilen in Go geschrieben, also bin ich nicht betitelt, um irgendeine idiomatische Art anzugeben. Bei wiederholten Call-and-Check-Error-Schritten finde ich jedoch, dass der Code etwas einfacher zu schreiben und zu lesen ist, wenn ich die Logik zurückstelle: anstatt die Bedingung für das Beenden zu prüfen (err! = Nil) , Überprüfe ich die Bedingung für die Fortsetzung (err == nil), wie unten gezeigt.
Dies kann getan werden, wenn Sie eine einzigartige Möglichkeit haben, den Fehler zu behandeln, egal, welcher Fehler ist, wie zum Beispiel zum Anrufer zurückzukehren oder ihn zu drucken / zu protokollieren. Der Nachteil dieses Ansatzes besteht darin, dass Sie die Variablen nicht implizit mit: = deklarieren können, da sie den Gültigkeitsbereich des if-Blocks haben würden, in dem sie zugewiesen sind.

%Vor%     
bieffe62 08.04.2014 15:44
quelle
-3

In einer Situation wie dieser mache ich es normalerweise einfach ein bisschen flacher.

%Vor%

Immer noch hässlich, aber zumindest ist es weniger vertikal, und wir bekommen eine gewisse Ausrichtung.

Ich kann nicht sagen, dass dies irgendeiner Art von Konvention entspricht, aber es ist viel einfacher, IMO zu lesen.

    
user2303443 21.04.2013 01:19
quelle

Tags und Links