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