Ticket Created
over 3 years ago

CIQQA-492

wf can't find property

sdk 4.0.3
eclipse plug in 4.0.4
eclipse Version: 2021-06 (4.20.0) Build id: 20210612-2011
windows 10
watch face
minSdkVersion 2.4.0

form era:

Error Name: Unhandled Exception
Devices:
    Venu® Sq: 2.70
Languages: dut

using Toybox.Application.Properties    as PRP;

//in line:

k = PRP.getValue(k);

but:

1. Properties should exist - sim/other devices read it

2. when I call for not existed property  k = PRP.getValue("k"); in IDE

Error: Unhandled Exception
Exception: Key does not exist in Application Properties

it would be useful to get name of exception in ERA

  • I've read somewhere that there is problem with settings file because it stored on other server then prg.

    User download app, run it but there is still no settings. An maybe it's a problem in this case, because it's not permanent, it raise occasionally.

  • yes, you are right, it's safe to send to server minimum information because somebody can send something private

    so send only what is safe and you know what it is, the the kind of exception isn't dangerous 

    but

    1. disconnect watch from the Internet

    2. run app

    3. crash, the log is saved:
    Error Name: Unhandled Exception
    ....

    4. connect to watch to computer

    5. modify log and first line looks like:

    NEW DATA

    6. synchronise watch

    I don't want to make test but I think in era I'll see  NEW DATA

    So, if we assume, that system save something in log what is safe it can be transferred to server.

  • None of my response above addresses the issue of the failed call. I don't know why you'd see this error on a venusq with 2.70 firmware using the Dutch language.

  • Just to be clear... I am not a lawyer. The following includes some legal "analysis" that I am not qualified for.

    The Exception: line (what would be returned by Exception.getErrorMessage()) is only output to the <AppName>.txt file and the debug console. It is by design that it is not written out to the CIQ_LOG.yml file that is uploaded to the crash reporting service. This is done to avoid allowing the developer to exfiltrate user data from the device via the crash reporting service. This would be problematic for Garmin as it puts us in conflict with privacy law. We would be storing and providing access to protected user data.

    Typically having access to the file and line number of the error is enough to easily determine the actual problem. Given the error report, you know it failed with an exception on a call to Properties.getValue(). The docs for that function indicate it throws two exception types, and one of the two is clearly applicable.

    That said, we might be able to log the exception class id to the crash log, and then we would display the class name in the ERA viewer. In this case the displayed name would be InvalidKeyException. This would require work in the vm running on the devices, firmware updates for those that will support the functionality, then updates to the backend that decodes the data, and the ERA viewer.