Hmm, I hoped that problem had been explained, but apparently not.

In a programming language, a function that gets wrong data normally returns with an error code. That just means that the function did not work properly. What you do in that case is completely up to you - you can show a "wrong image", whatever that means.

But when you get a crash, something essential went wrong. An example is loading a file with wrong content that overwrites internal data areas. The function can then not continue and often not even return. It must produce an error message that tells the user that the program crashed. This can not be "masked out" and replaced by a "wrong image", because it's quite possible that your wrong image code will never be reached.

I hope this helps understanding the difference between a recoverable and a not recoverable error.