7.11 Discriminating Errors with Type Assertions

Consider the set of errors returned by file operations in the os package. I/O can fail for any number of reasons, but three kinds of failure often must be handled differently: file already exists (for create operations), file not found (for read operations), and permission denied. The os package provides these three helper functions to classify the failure indicated by a given error value:

package os

func IsExist(err error) bool
func IsNotExist(err error) bool
func IsPermission(err error) bool

A naïve implementation of one of these predicates might check that the error message contains a certain substring,

func IsNotExist(err error) ...

Get The Go Programming Language now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.