golangのファイル存在チェックでIsNotExistが効かない
【2022年4月14日追記】
読んで参考にされていた方、申し訳ありません。
エラー処理について根本的な所を間違えていました…。
os.IsNotExist関数は今は使用せずに、errors.Is(fs.ErrNotExist)を使用して判定を行います。
errors.Is関数はラップされたエラーを辿って比較してくれるため、errors.Cause関数で取り出す必要はありません。
間違っていたコードは消して書き直しました。
ファイルの存在チェックで、ログだけ出力して先に進む処理を書こうと思い、IsNotExist
関数を使ってチェックしようとしましたが、うまく判定ができないパターンがありました。
|
|
上記コードを実行すると「2.ファイルが見つかりません」が表示されます。
os.IsNotExist
はerrors.WithStack
などで元のerror
が書き換えられると機能しなくなります。
その場合はerrors.Cause
で元のerror
を取り出してから与えるようにしましょう。
このようにerrors.Is関数で一発解決です😇
もっとGo言語のエラー処理について学んでいこうと思います。
実行環境
|
|
スポンサーリンク