Hey all, I was looking for a solution to the exception handling described above and tried the technique suggested. However, when I implement the exception in the onFailure method as shown, eclipse barfs and shows a "unhandled exception type throwable" error at me. Same thing happens when I try to compile anyway.
- I'm using GWT 1.5 and tried extending the exception with both Exception as well as SerializationException - Also, I'm implementing a fascade pattern as described in the GWT in Action Book for the RPC calls. Here's a scenario of what I'm trying public class MyRPCException extends Exception { // same definition of exception as above really. } public interface MyRPCService { ArrayList<SomeType> load() throws MyRPCException; } public interface MyRPCServiceAsync { void load(AsyncCallback<ArrayList<SomeType>>); } public class MyRPCFascade { private MyRPCFascade() // singleton is used just didn't bother inserting code here because i think its irrelevant to the issue. { proxy = (MyRPCServiceAsync) GWT.create(MyRPCService.class); ServiceDefTarget endPoint = (ServiceDefTarget) proxy; endPoint.setServiceEntryPoint("/myRPCService"); } public void load(AsyncCallback<ArrayList<SomeType>>) { proxy.load(callback); } } --- Server side ---- public class MyRPCServiceImpl implements MyRPCService { public ArrayList<SomeType> load() throws MyRPCExecption { try {.....} catch(SomeException e) { throw new MyRPCException(); } } } ----- Client Side ---- myRPCFascade.load(new SomeTypeCallback() ) class SomeTypeCallback implements AysncCallback<ArrayList<SomeType>> { public void onSuccess(ArrayList<SomeType> result) { // .... process result } public void onFailure(Throwable caught) { try { throw caught; // **** This is where compilation Fails } catch(MyRPCException e) { Window.alert("DING"); } } } Any ideas what I'm doing wrong? Thanks Suri On Nov 26, 11:08 pm, satya <satya.mu...@gmail.com> wrote: > There is a SerializationException > > (public class SerializationException > extends java.lang.Exception) in gwt1.5. > > SerializableException is depricated in 1.5 > > I shall try your suggestion of extending theExceptionor use the > SerilizationException and post the code here. > > Thank you both for your help, > Appreciate it > Satya > > On Nov 26, 12:54 pm, jossey <joss...@gmail.com> wrote: > > > I am sorry... my bad... I read it as SerializationException.... > > Looked at the SerializableException in gwt... it is just anException > > implementing IsSerializable interface... so it all makes sense. > > Thanks Ravi for clarifying. > > > BTW, in 1.5 gwt supports serialization of objects implementing > > java.io.Serializable. > > So just by extendingExceptionit would work. > > > Thanks again, > > Jossey. > > > On Nov 26, 8:56 am, Ravi M <mund...@gmail.com> wrote: > > > > Jossey > > > > Quite the contrary, actually. I started off with a customexception > > > which was merely a child class ofExceptionthat I intended to use in > > > RPC calls (i.e. service methods throw it). This actually didn't work > > > in the ways expected, i.e. when the server threw theexceptionI was > > > unable to retrieve theexceptionmessage in the client, or find out > > > what the cause was. Which is when some digging around revealed that if > > > you want to send theexceptionover the wire, it has to be a GWT > > > SerializableException. > > > > This is with 1.4.6x, of course this may have changed in 1.5.x, I am > > > not sure. > > > > Ravi > > > > On Nov 26, 5:58 pm, jossey <joss...@gmail.com> wrote: > > > > > Hi, > > > > Why are we extending SerializableException? > > > > Is that because the starting example had it so? > > > > I think it kinds of gives out a wrong message. ... > > > > just extendsExceptionshould do. > > > > > not very relevant to the discussion.... anyways... > > > > > Jossey. > > > > > On Nov 25, 3:33 pm, Ravi M <mund...@gmail.com> wrote: > > > > > > Ah me. Step 1 should read: > > > > > > 1. Declare your RPCexceptionlike so: > > > > > > public class MyRPCException extends SerializableException { > > > > > public MyRPCException() { > > > > > super(); > > > > > } > > > > > > public MyRPCException(String message) { > > > > > super(message); > > > > > } > > > > > > //... other stuff? > > > > > > } > > > > > > On Nov 26, 1:32 am, Ravi M <mund...@gmail.com> wrote: > > > > > > > Satya, > > > > > > > The following should work. > > > > > > > 1. Declare your RPCexceptionlike so: > > > > > > > public class MyRPCException extends SerializableException { > > > > > > public TrackerRPCException() { > > > > > > super(); > > > > > > } > > > > > > > public MyRPCException(String message) { > > > > > > super(message); > > > > > > } > > > > > > > //... other stuff? > > > > > > > } > > > > > > > 2. Declare your service method like so: > > > > > > > public SomeReturnedObject myServiceMethod(...arguments...) throws > > > > > > MyRPCException; > > > > > > > 3. Declare your async service method like so: > > > > > > > public void myServiceMethod(...arguments..., AsyncCallback > > > > > > callback); > > > > > > > 4. The server side implementation of your service method may be like > > > > > > so: > > > > > > > public SomeReturnedObject myServiceMethod(...arguments...) > > > > > > throws > > > > > > MyRPCException { > > > > > > SomeReturnedObject ret = null; > > > > > > try { > > > > > > // Do stuff to "populate" ret. This stuff could > > > > > > potentially fail. > > > > > > } catch (SomeNonGWTSerializableServerSideException e) { > > > > > > throw new MyRPCException("This is an error message that > > > > > > may be appropriate to show in the UI: " + e.getMessage()); > > > > > > } > > > > > > return ret; > > > > > > } > > > > > > > 5. In your AsyncCallback in the client: > > > > > > > public void onSuccess(Object result) { > > > > > > SomeReturnedObject foo = (SomeReturnedObject) > > > > > > result; > > > > > > // Happiness and tranquility reign supreme > > > > > > }; > > > > > > > public void onFailure(Throwableexception) { > > > > > > try { > > > > > > throwexception; > > > > > > } catch (MyRPCException e) { > > > > > > // Show the error message to the user, > > > > > > // or handle however you want to. > > > > > > } > > > > > > }; > > > > > > > This should work, there may be some overkill in this though. All > > > > > > this > > > > > > is GWT 1.4.6x, I'm not sure if any of this has changed in 1.5.x. > > > > > > > Hope this helps > > > > > > > Ravi > > > > > > > On Nov 26, 1:08 am, satya <satya.mu...@gmail.com> wrote: > > > > > > > > Thank you very much, > > > > > > > I guess i can return the String "IllegalDateRangeException" when > > > > > > > throwing thatexceptionfrom my Service and check for that in my > > > > > > > onFailure class. > > > > > > > > public void onFailure( Throwable caught ) > > > > > > > { > > > > > > > if ( caught.getMessage().contains > > > > > > > ( "IllegalDateRangeException" ) ) > > > > > > > > //handle my class. > > > > > > > } > > > > > > > > Thnak you, > > > > > > > Satya > > > > > > > > On Nov 25, 1:38 pm, "olivier nouguier" > > > > > > > <olivier.nougu...@gmail.com> > > > > > > > wrote: > > > > > > > > > On Tue, Nov 25, 2008 at 8:14 PM, satya <satya.mu...@gmail.com> > > > > > > > > wrote: > > > > > > > > > > Also > > > > > > > > > > when i call the actual method, does theexceptionget caught in > > > > > > > > > the > > > > > > > > > failure method or in my catch method? > > > > > > > > > > For example: > > > > > > > > > > AsyncCallback callBack = new AsyncCallback() { > > > > > > > > > public void onFailure( Throwable caught ) > > > > > > > > > { > > > > > > > > > //Is theexceptioncaught here????? > > > > > > > > here ! > > > > > > > > > } > > > > > > > > > > public void onSuccess( Object result ) > > > > > > > > > { > > > > > > > > > > } > > > > > > > > > try > > > > > > > > > { > > > > > > > > > createNewRuleService.createRule( > > > > > > > > > screenType, > > > > > > > > > eventRuleForm, callBack ); > > > > > > > > > } > > > > > > > > > catch ( IllegalDateRangeException e ) > > > > > > > > > { > > > > > > > > > //// or theexceptionis caught here? > > > > > > > > > > } > > > > > > > > > You should notice the differences between RemoteInterface and > > > > > > > > its > > > > > > > > Asyn counter part: > > > > > > > > * return type: the asyn interface method doesn't have return > > > > > > > > value > > > > > > > > ===> it will be pass as parameter asynchronously in onSuccess > > > > > > > > callback. > > > > > > > > *exception: are not part of the async method ===> it will be > > > > > > > > pass > > > > > > > > as parameter asynchronously in onFailure callback. > > > > > > > > > > Thank you very much for your help. I appreciate it. > > > > > > > > > > Satya > > > > > > > > > > On Nov 25, 1:10 pm, satya <satya.mu...@gmail.com> wrote: > > > > > > > > >> How do i specify in the service signature that this is GWT > > > > > > > > >> serializable? > > > > > > > > > >> my method signature looks like: > > > > > > > > >> public String create(Rule rule) throws > > > > > > > > >> IllegalDateRangeException; > > > > > > > > > >> On Nov 23, 5:23 am, "olivier nouguier" > > > > > > > > >> <olivier.nougu...@gmail.com> > > > > > > > > >> wrote: > > > > > > > > > >> > On Sun, Nov 23, 2008 at 6:58 AM, satya > > > > > > > > >> > <satya.mu...@gmail.com> wrote: > > > > > > > > > >> > > Hi, > > > > > > > > > >> > > Can i pass exceptions between client and server. > > > > > > > > >> > > Can i have an RPC serice with method that throw an user > > > > > > > > >> > > defined > > > > > > > > >> > >exceptionand handle thatexceptionin the client side? > > > > > > > > > >> > Yes as long as your exeption is declared in the Service > > > > > > > > >> > Signature (to > > > > > > > > >> > be declared as "GWT serialisable"). > > > > > > > > > >> > > I created an userdefinedexception: > > > > > > > > >> > > ------------------------------------------------------ > > > > > > > > >> > > public class IllegalDateRangeException extends > > > > > > > > >> > > SerializationException > > > > > > > > >> > > implements IsSerializable > > > > > > > > >> > > { > > > > > > > > >> > > private String errorMessage = null; > > > > > > > > > >> > > public IllegalDateRangeException ( String error ) > > > > > > > > >> > > { > > > > > > > > >> > > errorMessage = error; > > > > > > > > >> > > } > > > > > > > > > >> > > public String toString() > > > > > > > > >> > > { > > > > > > > > >> > > return "Exceptionoccurred: " + errorMessage; > > > > > > > > >> > > } > > > > > > > > > >> > > public String getErrorMessage() > > > > > > > > >> > > { > > > > > > > > >> > > return errorMessage; > > > > > > > > >> > > } > > > > > > > > > >> > > public void setErrorMessage( String errorMessage ) > > > > > > > > >> > > { > > > > > > > > >> > > this.errorMessage = errorMessage; > > > > > > > > >> > > } > > > > > > > > > >> > > } > > > > > > > > > >> > > and my RPC method throws thisexception: > > > > > > > > >> > > ------------------------------------------------ > > > > > > > > >> > > public String create(Rule rule) throws > > > > > > > > >> > > IllegalDateRangeException; > > > > > > > > > >> > > and i want to catch this > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to Google-Web-Toolkit@googlegroups.com To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---