Пораскинул мозгами и пришёл к следующему выводу.
Мой метод принимает данные:
1) пользовательские (URL картинки), которые меняются в процессе эксплуатации программы и которые невозможно предугадать;
2) ссылки на системные компоненты (Context), которые предоставляются на этапе разработки.
Пользовательские данные непредсказуемы на этапе разработки, поэтому их нужно тщательно проверять, сообщать пользователю об ошибках (и писать в лог для разработчика).
Системные компоненты - предсказуемая вещь, они контролируются на этапе разработки. Если программист написал так, что в качестве аргумента Context встало что-то другое, то это грубая ошибка, должно быть выброшено исключение, программа должна упасть. Исключение выбросит сама система, делать дополнительные проверки - лишняя работа.
Для удобства можно всё-таки их проверить и выбросить IllegalArgumentException с осмысленным сообщением, чтобы потом не вышло NullPointerException, с которым придётся разбираться дольше. Но обрабатывать и "поглощать" эти ошибки не нужно, так как это скроет от разработчика ошибки в коде.
Класс, таким образом, будет выглядеть такpublic class ImageLoader {
public static void loadImageToView(Context context, String imageURL)
// Пугаем исключением, чтобы донести до пользователя ошибку
throws ImageLoaderException
{
// Выбрасываем IllegalArgumentException, но не предупреждаем о нём:
// программа должна упасть, если программист накосячил
if (! context instanceof Context)
throw new IllegalArgumentException("Некорректный аргумент Context: "+context);
// Сообщаем пользователю о пустом URL
if (!isEmpty(imageURL))
throw new NoURL_Exception("imageURL не может быть пустым");
// Сообщаем о некорректном URL
if (!validFormat(imageURL))
throw new WrongURL_Exception("Некорректный imageURL: "+imageURL);
// ...
// Собственно работа
// ...
}
}