Ink

Contents related to tech, hobby, etc

Enough bytesランタイム例外の原因と対処の一例

|

Enough bytesランタイム例外の原因と対処の一例

私のHakyll製のこのブログのコードをいじっていたとき、コンパイルは問題なかったが 実行時に以下のような例外を吐いた。

blog: Data.Binary.Get.runGet at position 269: not enough bytes
CallStack (from HasCallStack):
  error, called at libraries/binary/src/Data/Binary/Get.hs:351:5 in binary-0.8.8.0:Data.Binary.Get

これは、どこかで Snapshot に入れた値が Binary のインスタンスを持たない型であった 可能性がある。

一番気をつけるべき(と個人的に思う)のは、 そのうちの一つが Text 型であること だ。 Text は実は Binary のインスタンスを持たない (持ってそうなのに)。 hackageを確認すれば 明白だろう。 なので、 Snapshotに入れる際は必ず unpack してあげる必要がある