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 <sami...@wso2.com>
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 <tha...@wso2.com> 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 <sami...@wso2.com>
>> 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 <sach...@wso2.com>
>>> 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 <sami...@wso2.com
>>>> > 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
>>>>> Dev@wso2.org
>>>>> 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
>>> Dev@wso2.org
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>>
>> *Tharik Kanaka*
>>
>> WSO2, Inc |#20, Palm Grove, Colombo 03, Sri Lanka
>>
>> Email: tha...@wso2.com | Web: www.wso2.com
>>
>
>
>
> --
> Samitha Chathuranga
> Software Engineer, WSO2 Inc.
> lean.enterprise.middleware
> Mobile: +94715123761
>
> _______________________________________________
> Dev mailing list
> Dev@wso2.org
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
*Praminda Jayawardana*
Software Engineer
WSO2 Inc.; http://wso2.com
Mobile : +94 (0) 716 590818
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to