ArgumentNullException について

初級者向けにおさらいします。

目次

この例外エラーの説明

Argument Null(メソッドに渡されてきた引数が Nothing(null 状態)の場合に発生する)Exception です。

事例とその対処方法

例外エラーは、想定外の扱われ方をすると発生して飛んで来ます。それは命令の使い方が間違っていたり、存在しないデータを扱おうとしていたり、アカウント権限を越えたアクセスをしようとしていたり(Windows 側やウェブ側の話だったり)、サービスが動いていないのに連携しようとしたり、製品上の仕様考慮モレだったり、そういう系です。

こうなっている前提のはずだから、こうやろうとしたのに、実際はここがこうなっているからダメじゃん!こういう場合の処理が無いじゃん!みたいなコードになっていませんか?

System.IO.File

1つ目

読み取りたいファイルのパスが Nothing の場合に発生します。

Dim logFile As String = Nothing
Dim logData As String = File.ReadAllText(logFile)
System.ArgumentNullException: '値を Null にすることはできません。
パラメーター名:path'

2つ目

フォルダでも同様です。読み取りたいフォルダパスが Nothing の場合、やはり発生します。

Dim targetFolder As String = Nothing
Dim subFolders() As String = Directory.GetDirectories(targetFolder)
System.ArgumentNullException: '値を Null にすることはできません。
パラメーター名:path'

基本的に引数は、外部から何らかの値が必要なためもらってくるものなのでこの例外エラーに限らずですが、必要としているのに Nothing なので実施したい内部処理ができなくて困る、ということになります。初期値が割り当たっているかどうか、インスタンス生成されているかを確認します。