Go语言错误处理,defer问题


package main

import (
    "fmt"
    "os"
)
func main() {
    files, err := os.Open("testqq.txt")
    defer files.Close()
    if err != nil {
        fmt.Printf("Error is:%s", "Game Over!")
        return
    }
}

这段代码简单打开文件"testqq.txt", 此文件根本就不存在的情况下, defer files.Close()会报错。
因为files是nil, 这个代码是不要判断files是否为nil。

defer go

vinving 10 years, 12 months ago

这个代码你需要这样写,首先判断错误,然后再defer定义

func main() {
        files, err := os.Open("testqq.txt")        
        if err != nil {
                fmt.Printf("Error is:%s", "Game Over!")
                return
        }
        defer files.Close()
    }
yonik answered 10 years, 12 months ago

Your Answer