{ "id": "176025", "key": "TIMOB-28338", "fields": { "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "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": [], "resolution": null, "resolutiondate": null, "created": "2021-02-07T15:46:16.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [ { "id": "21177", "name": "Release 9.3.1", "archived": false, "released": true, "releaseDate": "2021-01-26" }, { "id": "21050", "name": "Release 10.0.0", "archived": false, "released": true, "releaseDate": "2021-05-17" } ], "issuelinks": [], "assignee": null, "updated": "2021-02-07T15:46:44.000+0000", "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" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" }, { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "The exception handling in Titanium seems a bit odd:\r\n\r\n- The \"uncaughtException\" event provides many keys, but some are iOS only, some Android only, some are named differently (e.g. \"javaStack\" vs \"nativeStack or \"lineOffset\" vs \"column\").\r\n- There is no way to retrieve the native exception (NSException on iOS, Throwable/Exception on Android). If we'd have a proxy like \"TiException\" that boxes these native values, we could parse it our own or provide it to our crash reporting\r\n- On iOS, the \"uncaughtException\" event is fired 4 (!) times for each uncaught exception, making it unusable in production\r\n\r\nIt would be great if someone could jump on this and clean it up. Happy to help with feedback and test cases!", "attachment": [], "flagged": false, "summary": "iOS/Android: Parity for exception handling", "creator": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [], "maxResults": 0, "total": 0, "startAt": 0 } } }