java ee cdi: catch exception thrown by producer method -
is possible catch exception thrown producer method in java cdi? have following producer method
@produces public user getloggedinuser() throws usernotloggedinexception {     if(...){         throw new usernotloggedinexception();     }     user user = ...      ...     return user; } and want inject user object somewhere. cannot write method this:
private void dosomethingwithuser(){     try {         user loggedinuser = user.get(); // throws exception     } catch (usernotloggedinexception e){  // compiler compains         ...     } } as compiler says usernotloggedinexception not thrown in method. if catch generic exception, works fine. there more elegant solution problem? 
thanks
as stated in cdi spec (http://docs.jboss.org/cdi/spec/1.0/html/contexts.html#contextual), exception thrown when instantiating bean should unchecked exception (extends runtimeexception), guess it's not case of usernotloggedinexception since complier checked ;).
if change usernotloggedinexception make extends runtimeexception should work
anyway find more elegant avoid dealing exception. :
@produces public user getloggedinuser() throws usernotloggedinexception {     if(...){         return null;     }     user user = ...      ...     return user; } and check null value later.
private void dosomethingwithuser(){     if (user != null)         user loggedinuser = user.get(); // throws exception  } this work if user in @dependent scope.
the best approach in opinion avoid declaring user bean rather field in bean. bean exist while user field null when not logged in , not null when logged in.
null beans bit weird.
Comments
Post a Comment