Maybe someone sees an error here, I don't see any. The function is null safe, does not make any calculations (no 0 division) and looks like following:
static function formatSpeed(setup, speedInMeterPerSeconds) { var settings = System.getDeviceSettings(); var unit = "m/s"; var speed = speedInMeterPerSeconds; switch (setup.windSpeedUnit) { case 0 /* WIND_SPEED_UNIT_SYSTEM */: { if (settings.temperatureUnits == System.UNIT_STATUTE) { if (speed != null) { speed *= 2.23694; // m/s => miles/hour } unit = "mph"; } break; } case 1 /* WIND_SPEED_UNIT_MS */: { // passt break; } case 2 /* WIND_SPEED_UNIT_KMH */: { if (speed != null) { speed *= 3.6; } unit = "km/h"; break; } case 3 /* WIND_SPEED_UNIT_MPH */: { if (speed != null) { speed *= 2.23694; // m/s => miles/hour } unit = "mph"; break; } case 4 /* WIND_SPEED_UNIT_BEAUFORT */: { var bft = 0; if (speed == null) { } else if (speed < 0.3) { // passt } else if (speed < 1.6) { bft = 1; } else if (speed < 3.4) { bft = 2; } else if (speed < 5.5) { bft = 3; } else if (speed < 8.0) { bft = 4; } else if (speed < 10.8) { bft = 5; } else if (speed < 13.9) { bft = 6; } else if (speed < 17.2) { bft = 7; } else if (speed < 20.8) { bft = 8; } else if (speed < 24.5) { bft = 9; } else if (speed < 28.5) { bft = 10; } else if (speed < 32.7) { // <= line 313 bft = 11; } else { bft = 12; } speed = bft; unit = "Bft"; break; // <= line 320 } case 5 /* WIND_SPEED_UNIT_KNOTS */: { if (speed != null) { speed *= 1.94384; } unit = "kn"; break; } } if (speed == null) { return DataField.EMPTY + unit; } else { return speed.format("%d") + unit; } }
I marked line 313 and 320 (line 60 + 67 in the code snipplet) from my source code, in those lines I get following exception: Error Name: Invalid Value
Any ideas how this can happen? As the code above looks save for me, this seems to be something with a misleading stacktrace, but I have no idea where I can look further in this case...