Wallet: throw more appropriate exception types during completion.

Resolves issue 560.