Обработчик исключений для getenv()
Как я могу справиться NullPointerException
а также SecurityException
для такого вида кода строки:
public final static String PROJECT_DIR = System.getenv().get("HOME") + "/Projects/MyTestProject";
Достаточно будет просто обернуть его try/catch
? Если так, как я могу отличаться, это будет NullPointerException
или же SecurityException
?
Также есть ли лучшие практики, чтобы сохранить его в свойствах, если getenv()
недоступен или что-то еще?
2 ответа
Решение
Инициализировать final static String
в инициализаторе класса. Создайте новое исключение, описывающее проблему (не установлено, не разрешено). Например:
public final static String PROJECT_DIR;
static {
try {
Map<String, String> env = System.getenv();
if (!env.contains("HOME")) {
throw new AssertionError("HOME not set as environment variable");
}
PROJECT_DIR = env.get("HOME") + "/Projects/MyTestProject";
} catch (SecurityException e) {
throw new AssertionError("Security policy doesn't allow access to system environment", e);
}
}
Это вызовет как NullPointerExceptions, так и SecurityExceptions:
public static void main(String[] args) throws Exception {
System.out.println("System.getenv("HOME") = ");
System.out.println(System.getenv("HOME"));