your exception catching process is not giving you the enough information about exactly where the problem is.
every where you have used throws clause
i think first catch the exception using the try/catch block and then throw the same exception in the catch block
this will give you great advantages like debugging at development time.
Please correct me if i am wrong at any place(in this concept).