---
title: "defer-close-before-error-check"
description: "Detect deferred Close calls scheduled before checking acquisition errors."
image: "https://strider.gempir.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://strider.gempir.com/llms.txt
> Use this file to discover all available pages before exploring further.

# defer-close-before-error-check

**Default severity:** `error`

A resource-returning call may yield an unusable or nil value when it also
returns an error. Check the error before deferring `Close` on the resource.

## Bad

```go
file, err := os.Open(path); defer file.Close(); if err != nil { return err }
```

## Good

```go
file, err := os.Open(path); if err != nil { return err }; defer file.Close()
```

Source: https://strider.gempir.com/analyzers/defer-close-before-error-check/index.mdx
