Обработчик исключений для getenv () - PullRequest
0 голосов
/ 21 мая 2018

Как я могу обработать NullPointerException и SecurityException для такого вида кода строки:

public final static String PROJECT_DIR = System.getenv().get("HOME") + "/Projects/MyTestProject";

Достаточно будет просто обернуть его с try/catch?Если так, как я могу отличаться, это будет NullPointerException или SecurityException?

Также есть ли рекомендации по сохранению его в свойствах, если getenv() недоступен или что-то еще?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Это приведет к выбросам NullPointerExceptions и SecurityExceptions:

public static void main(String[] args) throws Exception {


      System.out.println("System.getenv("HOME") = ");
      System.out.println(System.getenv("HOME"));
0 голосов
/ 21 мая 2018

Инициализируйте 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);
     }
 }
...