Если ваш код (или библиотека) выдает Exception
в Java, не имеет значения, какое значение вы возвращаете, Java его проигнорирует. Очевидно, что это должен быть совместимый тип - поэтому возвращение 0
в вашем примере, похоже, имеет смысл, или что вам удобно. Когда ваш код вернется, среда выполнения Java заметит, что Exception
был поднят, и продолжит распространять его, и проигнорирует возвращаемое значение вашей функции.
Вам, конечно, нужно будет вернуть совместимый тип. Не просто возвращайте NULL
, так как это будет приведено к int
, когда функция не объявлена для возврата указателя, что может быть неуместно.
Очевидно, однако, что когда вы вызываете функции C, они не вызовут Exception
. Таким образом, вы можете либо сопоставить целое число с ошибкой (например, -1
), а затем выбросить Exception
в Java, либо вы можете потратить время на создание Exception
в JNI.