Java функция, которая выбрасывает RuntimeException - PullRequest
0 голосов
/ 23 января 2020

Я смотрю на какой-то код, и это сбивает меня с толку, так как я нахожу странным, как цель функции - просто выдать ошибку, хотя я уверен, что есть причины, где это полезно (по крайней мере, я так думаю) это делает). Насколько я понимаю, если аргументы типа String передаются в функцию putExtra, тогда RuntimeExeption выбрасывается. Правильно ли мое понимание? Ниже приведен код,

@RecentlyNonNull
public Intent putExtra(String name, String value) {
    throw new RuntimeException("Stub!");
}

public static final String ACTION_ID = "ACTION_ID";
Intent actionIntent = new Intent(this, LoginActivity.class);
actionIntent.putExtra(Constants.ACTION_ID, userId); //Where userId is also a string

Если мое понимание верно, что может быть причиной этого? Не будет ли выдано сообщение об ошибке автоматически, если один из аргументов функции putExtra не относится к типу String?

Ответы [ 2 ]

2 голосов
/ 24 января 2020

Это просто поддельные реализации, которые существуют только для компилятора Java, чтобы знать, какие существуют API. Фактические реализации находятся на устройстве. Например, реализацию Intent можно найти здесь .

0 голосов
/ 16 февраля 2020

У этого RuntimeExeption может быть совсем другая причина (пожалуйста, добавьте трассировку стека). И даже если посмотреть на сигнатуры метода, это не всегда String value. Первый аргумент должен быть String, потому что это имя - в то время как второй аргумент предназначен для значения и может иметь различные типы (не любого типа). См. Работа с точками останова , которая скорее объясняет причину сбоя.

...