You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Jesse MacFadyen (JIRA)" <ji...@apache.org> on 2016/08/30 22:14:21 UTC

[jira] [Updated] (CB-11786) Callstack is not logged in js console log when exception happens in bridge call

     [ https://issues.apache.org/jira/browse/CB-11786?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jesse MacFadyen updated CB-11786:
---------------------------------
    Description: 
In cordova.js, callbackFromNative method, when handles the exception, it
only logs the callbackid and error message, but does not log the error
callstack. Usually the callstack is quite useful to find what causes the
exception, so just wonder what is the reason to not include it in the error
console log.

If it is fine to include the call stack information in the console log, I
would like to submit a pull request for the change.

{code}
   /**
      * Called by native code when returning the result from an action.
      */
     callbackFromNative: function(callbackId, isSuccess, status, args,
keepCallback) {
         try {
             var callback = cordova.callbacks[callbackId];
             if (callback) {
                 if (isSuccess && status == cordova.callbackStatus.OK) {
                     callback.success && callback.success.apply(null, args);
                 } else if (!isSuccess) {
                     callback.fail && callback.fail.apply(null, args);
                 }
                 /*
                 else
                     Note, this case is intentionally not caught.
                     this can happen if isSuccess is true, but
callbackStatus is NO_RESULT
                     which is used to remove a callback from the list
without calling the callbacks
                     typically keepCallback is false in this case
                 */
                 // Clear callback if not expecting any more results
                 if (!keepCallback) {
                     delete cordova.callbacks[callbackId];
                 }
             }
         }
         catch (err) {
             var msg = "Error in " + (isSuccess ? "Success" : "Error") + "
callbackId: " + callbackId + " : " + err;
             console && console.log && console.log(msg);
             cordova.fireWindowEvent("cordovacallbackerror", { 'message':
msg });
             throw err;
         }
{code}

  was:

In cordova.js, callbackFromNative method, when handles the exception, it
only logs the callbackid and error message, but does not log the error
callstack. Usually the callstack is quite useful to find what causes the
exception, so just wonder what is the reason to not include it in the error
console log.

If it is fine to include the call stack information in the console log, I
would like to submit a pull request for the change.


   /**
      * Called by native code when returning the result from an action.
      */
     callbackFromNative: function(callbackId, isSuccess, status, args,
keepCallback) {
         try {
             var callback = cordova.callbacks[callbackId];
             if (callback) {
                 if (isSuccess && status == cordova.callbackStatus.OK) {
                     callback.success && callback.success.apply(null, args);
                 } else if (!isSuccess) {
                     callback.fail && callback.fail.apply(null, args);
                 }
                 /*
                 else
                     Note, this case is intentionally not caught.
                     this can happen if isSuccess is true, but
callbackStatus is NO_RESULT
                     which is used to remove a callback from the list
without calling the callbacks
                     typically keepCallback is false in this case
                 */
                 // Clear callback if not expecting any more results
                 if (!keepCallback) {
                     delete cordova.callbacks[callbackId];
                 }
             }
         }
         catch (err) {
             var msg = "Error in " + (isSuccess ? "Success" : "Error") + "
callbackId: " + callbackId + " : " + err;
             console && console.log && console.log(msg);
             cordova.fireWindowEvent("cordovacallbackerror", { 'message':
msg });
             throw err;
         }



> Callstack is not logged in js console log when exception happens in bridge call  
> ---------------------------------------------------------------------------------
>
>                 Key: CB-11786
>                 URL: https://issues.apache.org/jira/browse/CB-11786
>             Project: Apache Cordova
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the default.) 
>          Components: CordovaJS
>    Affects Versions: 6.1.1
>         Environment: all platform
>            Reporter: Jonathan Li
>
> In cordova.js, callbackFromNative method, when handles the exception, it
> only logs the callbackid and error message, but does not log the error
> callstack. Usually the callstack is quite useful to find what causes the
> exception, so just wonder what is the reason to not include it in the error
> console log.
> If it is fine to include the call stack information in the console log, I
> would like to submit a pull request for the change.
> {code}
>    /**
>       * Called by native code when returning the result from an action.
>       */
>      callbackFromNative: function(callbackId, isSuccess, status, args,
> keepCallback) {
>          try {
>              var callback = cordova.callbacks[callbackId];
>              if (callback) {
>                  if (isSuccess && status == cordova.callbackStatus.OK) {
>                      callback.success && callback.success.apply(null, args);
>                  } else if (!isSuccess) {
>                      callback.fail && callback.fail.apply(null, args);
>                  }
>                  /*
>                  else
>                      Note, this case is intentionally not caught.
>                      this can happen if isSuccess is true, but
> callbackStatus is NO_RESULT
>                      which is used to remove a callback from the list
> without calling the callbacks
>                      typically keepCallback is false in this case
>                  */
>                  // Clear callback if not expecting any more results
>                  if (!keepCallback) {
>                      delete cordova.callbacks[callbackId];
>                  }
>              }
>          }
>          catch (err) {
>              var msg = "Error in " + (isSuccess ? "Success" : "Error") + "
> callbackId: " + callbackId + " : " + err;
>              console && console.log && console.log(msg);
>              cordova.fireWindowEvent("cordovacallbackerror", { 'message':
> msg });
>              throw err;
>          }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org