{ "id": "167446", "key": "TIMOB-24657", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "19904", "description": "", "name": "Hyperloop 3.0.0", "archived": false, "released": true, "releaseDate": "2017-12-07" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2017-11-17T20:43:31.000+0000", "created": "2017-05-04T07:07:41.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "Escalation", "android", "exceptions", "hyperloop" ], "versions": [], "issuelinks": [ { "id": "56149", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "170344", "key": "TIMOB-25523", "fields": { "summary": "Hyperloop: Android - Add support to catch typed exceptions", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2017-11-28T09:43:42.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "13715", "name": "Hyperloop", "description": "Hyperloop project" } ], "description": "It would be interesting to catch exceptions thrown in the hyperloop proxy.\r\n\r\nExample:\r\n\r\n{code:javascript}\r\nvar Activity = require('android.app.Activity'),\r\n activity = new Activity(Ti.Android.currentActivity);\r\n\r\n var PackageManager = require('android.content.pm.PackageManager');\r\n\r\n var pm = activity.getPackageManager();\r\n var isInstalled = true;\r\n var package = 'com.thisPackageNotExists';\r\n\r\n try {\r\n var packageInfo = pm.getPackageInfo(package, PackageManager.GET_ACTIVITIES); //Throws NameNotFoundException\r\n } catch (error) {\r\n //This block never is executed if the exception is thrown\r\n isInstalled = false;\r\n console.log('Exception PM : ' + JSON.stringify(error));\r\n } finally {\r\n alert(package + ' is installed: ' + isInstalled);\r\n }\r\n{code}\r\n\r\nException Example:\r\n\r\n{noformat}\r\n[ERROR] HyperloopProxy: (main) [285,285] Exception thrown during invocation of method: public android.content.pm.PackageInfo android.app.ApplicationPackageManager.getPackageInfo(java.lang.String,int) throws android.content.pm.PackageManager$NameNotFoundException, args: [com.jormagar.packageManagerrs, 1]\r\n[ERROR] HyperloopProxy: android.content.pm.PackageManager$NameNotFoundException: com.jormagar.packageManagerrs\r\n[ERROR] HyperloopProxy: \tat android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:137)\r\n[ERROR] HyperloopProxy: \tat java.lang.reflect.Method.invoke(Native Method)\r\n[ERROR] HyperloopProxy: \tat hyperloop.BaseProxy.invokeMethod(BaseProxy.java:145)\r\n[ERROR] HyperloopProxy: \tat hyperloop.InstanceProxy.invokeMethod(InstanceProxy.java:183)\r\n[ERROR] HyperloopProxy: \tat hyperloop.BaseProxy.callNativeFunction(BaseProxy.java:127)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(Native Method)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.kroll.runtime.v8.V8Object.fireEvent(V8Object.java:62)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.kroll.KrollProxy.doFireEvent(KrollProxy.java:872)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1095)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:357)\r\n[ERROR] HyperloopProxy: \tat org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:116)\r\n[ERROR] HyperloopProxy: \tat ti.modules.titanium.ui.WindowProxy.handleMessage(WindowProxy.java:453)\r\n[ERROR] HyperloopProxy: \tat android.os.Handler.dispatchMessage(Handler.java:98)\r\n[ERROR] HyperloopProxy: \tat android.os.Looper.loop(Looper.java:148)\r\n[ERROR] HyperloopProxy: \tat android.app.ActivityThread.main(ActivityThread.java:5417)\r\n[ERROR] HyperloopProxy: \tat java.lang.reflect.Method.invoke(Native Method)\r\n[ERROR] HyperloopProxy: \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)\r\n[ERROR] HyperloopProxy: \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)\r\n{noformat}\r\n", "attachment": [], "flagged": false, "summary": "Hyperloop: Android - Support to catch native exceptions", "creator": { "name": "jormagar", "key": "jormagar", "displayName": "Jorge Macias Garcia", "active": true, "timeZone": "Europe/Brussels" }, "subtasks": [], "reporter": { "name": "jormagar", "key": "jormagar", "displayName": "Jorge Macias Garcia", "active": true, "timeZone": "Europe/Brussels" }, "environment": null, "closedSprints": [ { "id": 968, "state": "closed", "name": "2017 Sprint 23 SDK", "startDate": "2017-11-05T16:37:25.071Z", "endDate": "2017-11-19T16:37:00.000Z", "completeDate": "2017-11-20T18:57:56.565Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "430715", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR: https://github.com/appcelerator/hyperloop.next/pull/258", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-11-15T14:51:16.000+0000", "updated": "2017-11-15T14:51:16.000+0000" } ], "maxResults": 2, "total": 2, "startAt": 0 } } }