Учитывая следующий пример (ниже), который будет загружать файл json локально. Есть ли вероятность исключения Resources.NotFoundException? Если вы ссылаетесь на файл, который не существует, вы получаете ошибку компиляции. Кроме того, допустим, что вы каким-то образом получили ошибку компиляции, стоит ли справляться с этим исключением? Предполагая, что вы хотите знать, когда возникает такая проблема (без маскировки / обработки)?
public static String loadJsonFromAsset(@NonNull Context context, int id) {
String json;
// open a data stream for reading a raw resource
InputStream is = context.getResources().openRawResource(id);
try {
// estimate of the number of bytes that can be read (or skipped over) from this
// input stream
byte[] buffer = new byte[is.available()];
is.read(buffer);
// constructs a new String by decoding the specified array of bytes using the specified
// charset set String representation of json
json = new String(buffer, UTF);
} catch (IOException e) {
Logger.e(TAG, e.getMessage());
e.printStackTrace();
return null;
} finally {
try {
is.close();
} catch (IOException e) {
Logger.e(TAG, e.getMessage());
e.printStackTrace();
}
}
return json;
}
Если это так, что это нужно обработать, должен ли inputStream быть проверен на нулевое значение? Потому что появятся предупреждения lint о том, что inputStream не может быть нулевым. Но если вы передадите идентификатор, который не существует, это возможно. Что, опять же, заставляет меня поверить, что Resources.NotFoundException - бесполезная проверка, потому что исключение компиляции предотвращает сценарий все вместе.