should remind myself not to work with exception under db transaction :(