log.Fatal versucht, das Programm mit dem Exit-Status 1 nach Ausgabe der Nachricht zu beenden

Schlussfolgerung: Lesen Sie die Dokumentation richtig, wenn Sie die API verwenden (´ ・ ω ・ `).

Die Go-Sprachen "log.Fatal", "log.Fatalf" und "log.Fatalln" geben "os.Exit (1)" aus, nachdem die Nachricht ausgegeben wurde, und versuchen, den Prozess zu beenden. Zum Beispiel, wenn Sie das folgende Programm haben:

main.go


package main

import (
	"fmt"
	"log"
)

func main() {
	fmt.Println("BEFORE")

	log.Fatalln("FATAL")

	fmt.Println("AFTER")
}

Wenn Sie dies erstellen und ausführen, werden Sie feststellen, dass das Programm nach der Ausgabe von FATAL mit dem Exit-Status 1 beendet wurde ( AFTER wurde nicht ausgegeben).

$ go build .
$
$ ./fataltest
BEFORE
2020/11/15 21:02:55 FATAL
$
$ echo $?
1

Einige andere Programmiersprachen und Bibliotheken haben FATAL als Protokollstufe. Kurz gesagt, wenn Sie eine Funktion vom Typ "log.Fatal" verwenden und denken "Ist es diejenige, die das FATAL-Level-Protokoll ausgibt!", Kann dies einen unerwarteten Fehler verursachen - oder besser gesagt, ich habe es getan. Betrachtung)

Referenz

Recommended Posts

log.Fatal versucht, das Programm mit dem Exit-Status 1 nach Ausgabe der Nachricht zu beenden
So starten Sie die erste Projektion
So überwachen Sie den Ausführungsstatus von sqlldr mit dem Befehl pv