Undefined値
前述の未定義の値をすべて処理するには、未定義性 (undefinedness) を検出する必要がある。つまり、呼び出された関数が、通常の結果を返すことができないと判断し、呼び出し元に通知するためのアクションを実行する。対極的に、未定義の動作 (米: undefined behavior, 英: undefined behaviour) は、範囲外の引数を使用して関数を呼び出さないようにするという責任を呼び出し元に課す。何が起こりうるかということに関する制限はない。検出のしやすいクラッシュを引き起こすのがせいぜいだが、最悪の場合、一見無関係な計算における微妙なエラーを引き起こす。
また、未定義の値は、ハードウェアで特に頻繁に発生する。配線が有用な情報を伝達していない場合でも、配線は存在し、ある程度の電圧レベルを持つ。
データバッファが提供されているが完全に満たされていない場合、ソフトウェアでも同じ状況が発生する。たとえば、Cライブラリのstrftime関数は、タイムスタンプを人間が読める(文字列の)形式に変換して、提供された出力バッファに格納するが、出力バッファが結果を保持するのに十分な大きさでない場合、戻り値ではエラーを示す整数値0が返され、バッファの内容は未定義になる。
引数が定義域の範囲外だった場合、部分関数の値は未定義となる。これはゼロ除算、負数に対する平方根や対数など、多数の算術的な事例を含む。別のよくある事例としては、範囲外のインデックスで配列にアクセスすることで発生する(連想配列において、対応するキーが含まれていない場合の値と同様)。このような状況を実際に処理するには、さまざまな方法がある。