Bug-116 Make MainActivity can select different category.

BTW, `Exception` class is too general. May we narrow down to more specific exceptions?

And we should not catch any exceptions when we want the caller to know there may be some error here.