Hi Praminda,

Thanks for the suggestion. That approach seems suitable here.

Regards.

On Thu, Mar 31, 2016 at 10:33 AM, Praminda Jayawardana <[email protected]>
wrote:

> Hi Samitha,
>
> LBYL(Look Bfore You Leap) and EAFP(Easier to Ask Forgiveness than
> Permission) is the two ways used to error checking. Different languages
> have different preferences. Ex: Python prefers EAFP (try-catch) over LBYL
> (if-else).
> I haven't come across any standard for Java but people use try-catch
> frequently. In JS, using try-catch for use cases where you can't test for
> the error is not preferable due to performance issues and asynchronous
> nature of JS.
>
> In you case my suggestion is to catch the exception in Java level , log it
> if you want the stack trace, throw the error to jaggery and send a error
> code to JS as tharik suggested.
>
> Thanks,
> Praminda
>
> On Wed, Mar 30, 2016 at 2:02 PM, Samitha Chathuranga <[email protected]>
> wrote:
>
>> Hi Tharik,
>>
>> Thanks Tharik. Yes in jaggery level I could detect exception type in
>> catch block by following your approach. But it seems impossible to log or
>> get the stack trace of the exception there. But as in the example in
>> yours,  e.javaException.getFaultGateWayString() might be giving it, but not
>> all the Exceptions are having such methods as I know.
>>
>> Thanks
>> Samitha
>>
>>
>> On Wed, Mar 30, 2016 at 11:20 AM, Tharik Kanaka <[email protected]> wrote:
>>
>>> Hi Samitha,
>>>
>>> Backend server should send a proper HTTP Error code instead of return a
>>> value with error message. Here you can throw exception from Java and do the
>>> log in jaggery level. In jaggery level you can detect exception type in
>>> catch block by following approach in the code below.
>>>
>>> if(e.javaException instanceof
>>> org.wso2.carbon.apimgt.api.FaultGatewaysException){
>>>  return {
>>> error:true,
>>> message:e.javaException.getFaultGateWayString()
>>> };
>>>
>>>  }
>>>
>>> Regards,
>>>
>>> On Wed, Mar 30, 2016 at 11:08 AM, Samitha Chathuranga <[email protected]>
>>> wrote:
>>>
>>>> Hi Sachith,
>>>>
>>>> So do you suppose to catch the error thrown from java, finally at the
>>>> jaggery or even later at javascript?
>>>> Anyway if we are printing the full stacktrace in Java side, what is the
>>>> objective of throwing it to the jaggery ?
>>>>
>>>> Is it to indicate to the front end that an error was occurred in the
>>>> back end? I guess this indication can also be done using a return value
>>>> (boolean or something else) from java side function, but I'm afraid it is
>>>> an accepted standard.
>>>>
>>>> Thanks,
>>>> Samitha
>>>>
>>>> On Wed, Mar 30, 2016 at 10:45 AM, Sachith Withana <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi Samitha,
>>>>>
>>>>> From what I understand, you need to both print the full stack trace
>>>>> and throw a proper message to the front end.
>>>>>
>>>>> If that so, you can catch the error, log it and throw a custom error
>>>>> from the java side.
>>>>>
>>>>> Cheers,
>>>>> Sachith
>>>>>
>>>>> On Wed, Mar 30, 2016 at 10:31 AM, Samitha Chathuranga <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I am developing a feature in WSO2 PC and in it I have a JavaScript
>>>>>> front end and a Java back end. To call java classes from the JavaScript I
>>>>>> am using Jaggery in between the above two. So my question is what is the
>>>>>> best practice in Exception handling and error logging in such a this
>>>>>> scenario.
>>>>>>
>>>>>> As I understand I can come out with few options.
>>>>>>
>>>>>> Option 1- Catching the  exception in the Java class itself and log
>>>>>> the complete error with an appropriate custom error message using 
>>>>>> log.error(errMsg,
>>>>>> e), without throwing exceptions from the method signature, using
>>>>>> throws clause. (As we usually do in a sole java application). So
>>>>>> here the exceptions are completely handled from the back end and doesn't
>>>>>> come at least to the jaggery. And for the purpose of showing some error
>>>>>> message to the front end user we can return a message or flag or 
>>>>>> something
>>>>>> from the java function to the jaggery side. So at the jaggery side or 
>>>>>> even
>>>>>> at the javascript, we can check that return value and show the error
>>>>>> message as an alert and proceed depending conditionally on that return
>>>>>> value.
>>>>>>
>>>>>> Option 2- We can throw the the exception in the catch block of java
>>>>>> class using throw new ExceptionClassName("custom error message",e) and
>>>>>> catch it in the jaggery file. But here I am getting the problem that we
>>>>>> cannot log the complete long exception report using log.error(_ _) in
>>>>>> jaggery. We can just print the custom error message set by us when 
>>>>>> throwing
>>>>>> it from Java side. But I don't know is there any other way to trace that
>>>>>> complete exception in jaggery. Anybody know something on it?
>>>>>>
>>>>>> Option 3- We can catch the error in the JavaScript, without catching
>>>>>> in the Jaggery. But I don't think this is ok as we won't be able to print
>>>>>> the exception in the server console if we do it so.
>>>>>>
>>>>>> I want to know what is the best practice in such a this scenario and
>>>>>> if it is Option 2, what is the solution for the problem in it as 
>>>>>> mentioned
>>>>>> there above. Appreciate support from somebody.
>>>>>>
>>>>>> Thanks,
>>>>>> Samitha
>>>>>>
>>>>>> --
>>>>>> Samitha Chathuranga
>>>>>> Software Engineer, WSO2 Inc.
>>>>>> lean.enterprise.middleware
>>>>>> Mobile: +94715123761
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dev mailing list
>>>>>> [email protected]
>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Sachith Withana
>>>>> Software Engineer; WSO2 Inc.; http://wso2.com
>>>>> E-mail: sachith AT wso2.com
>>>>> M: +94715518127
>>>>> Linked-In: <http://goog_416592669>
>>>>> https://lk.linkedin.com/in/sachithwithana
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Samitha Chathuranga
>>>> Software Engineer, WSO2 Inc.
>>>> lean.enterprise.middleware
>>>> Mobile: +94715123761
>>>>
>>>> _______________________________________________
>>>> Dev mailing list
>>>> [email protected]
>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>> *Tharik Kanaka*
>>>
>>> WSO2, Inc |#20, Palm Grove, Colombo 03, Sri Lanka
>>>
>>> Email: [email protected] | Web: www.wso2.com
>>>
>>
>>
>>
>> --
>> Samitha Chathuranga
>> Software Engineer, WSO2 Inc.
>> lean.enterprise.middleware
>> Mobile: +94715123761
>>
>> _______________________________________________
>> Dev mailing list
>> [email protected]
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> *Praminda Jayawardana*
> Software Engineer
> WSO2 Inc.; http://wso2.com
> Mobile : +94 (0) 716 590818
>



-- 
Samitha Chathuranga
Software Engineer, WSO2 Inc.
lean.enterprise.middleware
Mobile: +94715123761
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to