diff --git a/examples/defer/defer.go b/examples/defer/defer.go index 06c827f..0941d10 100644 --- a/examples/defer/defer.go +++ b/examples/defer/defer.go @@ -40,5 +40,10 @@ func writeFile(f *os.File) { func closeFile(f *os.File) { fmt.Println("closing") - f.Close() + err := f.Close() + // It is important to check for errors when closing a file, even in a deferred function. + if err != nil { + fmt.Fprintf(os.Stderr, "error: %v\n", err) + os.Exit(1) + } } diff --git a/examples/defer/defer.hash b/examples/defer/defer.hash index 2994617..5e437d4 100644 --- a/examples/defer/defer.hash +++ b/examples/defer/defer.hash @@ -1,2 +1,2 @@ -570699fc50a1d39e9d0ad6a4461aef3248b080e1 -xPbQ5SGkH2O +4e2229c593e102d4efd101a7e9aa21f3345e90d1 +S2RuPTkABip diff --git a/public/defer b/public/defer index 43445ec..8f0b130 100644 --- a/public/defer +++ b/public/defer @@ -30,7 +30,7 @@ purposes of cleanup. defer is often used where e.g. - +
package main
@@ -132,15 +132,31 @@ of the enclosing function (main), after
           
         
         
+        
+          
+            

It is important to check for errors when closing a file, even in a deferred function.

+ + + + +
func closeFile(f *os.File) {
+    fmt.Println("closing")
+    err := f.Close()
+
+ + + + -
func closeFile(f *os.File) {
-    fmt.Println("closing")
-    f.Close()
+            
    if err != nil {
+        fmt.Fprintf(os.Stderr, "error: %v\n", err)
+        os.Exit(1)
+    }
 }