You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Jan Piotrowski (janpio) (JIRA)" <ji...@apache.org> on 2019/07/05 13:25:00 UTC
[jira] [Updated] (CB-13804) Always log a message when catching an
exception
[ https://issues.apache.org/jira/browse/CB-13804?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jan Piotrowski (janpio) updated CB-13804:
-----------------------------------------
Component/s: (was: cordova-windows)
> Always log a message when catching an exception
> -----------------------------------------------
>
> Key: CB-13804
> URL: https://issues.apache.org/jira/browse/CB-13804
> Project: Apache Cordova
> Issue Type: Improvement
> Components: cordova-android, cordova-browser, cordova-ios, cordova-js, cordova-osx
> Reporter: Chris Brody
> Assignee: Joe Bowser
> Priority: Minor
>
> Looking at cordova.js in cordova-windows along with the other platforms I noticed that the JavaScript logs a message in most but not all {{catch}} blocks. Here are a few exceptions I spotted so far:
> In {{cordova-js}} {{src/common/builder.js}}:
> {code:javascript}
> function include (parent, objects, clobber, merge) {
> each(objects, function (obj, key) {
> try {
> var result = obj.path ? require(obj.path) : {};
> // ...
> } catch (e) {
> utils.alert('Exception building Cordova JS globals: ' + e + ' for key "' + key + '"');
> }
> });
> }
> {code}
> {{utils.alert}} would show an alert if possible, otherwise log a message. I would rather to see the JavaScript log the message regardless of whether or not it is possible to show the alert (ideally log first). Possible fix (NOT TESTED):
> {code:javascript}
> diff --git a/src/common/utils.js b/src/common/utils.js
> index febfd91..7244b8f 100644
> --- a/src/common/utils.js
> +++ b/src/common/utils.js
> @@ -170,12 +170,9 @@ utils.extend = (function () {
> }());
>
> /**
> - * Alerts a message in any available way: alert or console.log.
> + * Alerts a message in any possible way: alert / console.log
> */
> utils.alert = function (msg) {
> - if (window.alert) {
> - window.alert(msg);
> - } else if (console && console.log) {
> - console.log(msg);
> - }
> + console && console.log && console.log(msg);
> + window.alert && window.alert(msg);
> };
> {code}
> Possible fixes in {{cordova-windows}} (NOT TESTED):
> {code:javascript}
> diff --git a/cordova-js-src/confighelper.js b/cordova-js-src/confighelper.js
> index c166052..faa65e3 100644
> --- a/cordova-js-src/confighelper.js
> +++ b/cordova-js-src/confighelper.js
> @@ -89,7 +89,11 @@ function requestFile(filePath, success, error) {
> xhr.open("get", filePath, true);
> xhr.send();
> } catch (e) {
> - fail('[Windows][cordova.js][xhrFile] Could not XHR ' + filePath + ': ' + JSON.stringify(e));
> + var msg =
> + '[Windows][cordova.js][xhrFile] Could not XHR ' + filePath + ': ' +
> + JSON.stringify(e);
> + console.error(msg);
> + fail(msg);
> }
> }
>
> diff --git a/cordova-js-src/platform.js b/cordova-js-src/platform.js
> index 4bc4025..dbc1c75 100644
> --- a/cordova-js-src/platform.js
> +++ b/cordova-js-src/platform.js
> @@ -99,7 +99,9 @@ module.exports = {
> try {
> Windows.UI.ViewManagement.ApplicationView.getForCurrentView();
> isCoreWindowAvailable = true;
> - } catch (e) { }
> + } catch (e) {
> + console && console.log && console.log('NOTICE: CoreWindow functionality is not available');
> + }
>
> if (isCoreWindowAvailable) {
> app.addEventListener("checkpoint", checkpointHandler);
> @@ -160,6 +162,7 @@ function injectBackButtonHandler() {
> return true;
> }
> catch (e) {
> + console && console.log && console.log('NOTICE: backbutton handler not available, ignored');
> return false;
> }
> }
> {code}
> I would need some time to check for unlogged exceptions on the other platforms.
> A case where I think logging should NOT be done in release build is in the {{clobber}} funciton in {{cordova-js/src/common/builder.js}}:
> {code:javascript}
> function clobber (obj, key, value) {
> exports.replaceHookForTesting(obj, key);
> var needsProperty = false;
> try {
> obj[key] = value;
> } catch (e) {
> needsProperty = true;
> }
> // ...
> {code}
> I originally spotted this issue on Windows when looking at the ApplicationView calls related to the changes in CB-12238, CB-12784, and CB-13641 along with suggested changes I raised in CB-13802.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org