<分区>
我正在学习 Go 并遇到了这种我不理解的行为。当我进行错误检查并使用 log.Printf() 时,我看到了操作系统错误,如果我在命令行上犯同样的错误,我通常会看到这种错误。
但是当我使用 log.Fatal() 时,最后一个 log.Printf() 不会打印到屏幕上。
package main
import (
"log"
"os/exec"
"fmt"
)
func main() {
cmd := exec.Command("ls", "-2")
stdoutStderr, err := cmd.CombinedOutput()
if err != nil {
log.Printf("Error: %v", err)
fmt.Println("Printing log fatal()")
log.Fatal(err)
}
fmt.Printf("Output %s\n", stdoutStderr)
}
我期待看到这个输出:
# go run main.go
2019/05/14 11:23:34 Error: exit status 2
Output ls: invalid option -- '2'
Try 'ls --help' for more information.
Printing log fatal()
2019/05/14 11:24:45 exit status 2
exit status 1
但我的实际结果是:
# go run main.go
2019/05/14 11:24:45 Error: exit status 2
Printing log fata()
2019/05/14 11:24:45 exit status 2
exit status 1