Refs #385, #386.
Summary:
1. Use self exception.