implement exception system
replace major error point to use exception
Merge pull request #14 from umegaya/umegaya/feature/exception

implement exception system LGTM