Refactor douban error handling exceptions

这是我上次的 pull request 之后做的一些改动，忘了发过来，这次一并发上