errors.Is vs errors.As

Use errors.Is to check for specific error values and errors.As to extract custom error types from wrapped chains.

Use errors.Is to check if an error matches a specific error value, and errors.As to extract a specific error type from a wrapped error chain.

if errors.Is(err, ErrInsecurePath) {
    // Handle specific error value
}

var targetErr *MyCustomError
if errors.As(err, &targetErr) {
    // Access fields of MyCustomError
}