Как делает System.exit Java (), работают с блоками попытки/выгоды/наконец? [дубликат]

Можно также обернуть вывод cmdlet (или конвейер) в @(), чтобы гарантировать, что то, что Вы возвращаете, является массивом, а не единственным объектом.

, Например, dir обычно возвращает список, но в зависимости от опций, он мог бы возвратить отдельный объект. Если Вы - планирование итерации через результаты с foreach-объектом, необходимо удостовериться, что Вы возвращаете список. Вот изобретенный пример:

$results = @( dir c:\autoexec.bat)

Еще одна вещь... пустой массив (любят инициализировать переменную) обозначен @().

74
задан Thomas Owens 11 September 2009 в 13:43
поделиться

1 ответ

№. System.exit (0) не возвращается, и блок finally не выполняется.

System.exit (int) может вызвать исключение SecurityException . Если это произойдет, будет выполнен блок finally . И поскольку тот же принципал вызывает тот же метод из той же кодовой базы, другое SecurityException , вероятно, будет выброшено из второго вызова.


Вот пример второго случая:

import java.security.Permission;

public class Main
{

  public static void main(String... argv)
    throws Exception
  {
    System.setSecurityManager(new SecurityManager() {

      @Override
      public void checkPermission(Permission perm)
      {
        /* Allow everything else. */
      }

      @Override
      public void checkExit(int status)
      {
        /* Don't allow exit with any status code. */
        throw new SecurityException();
      }

    });
    System.err.println("I'm dying!");
    try {
      System.exit(0);
    } finally {
      System.err.println("I'm not dead yet!");
      System.exit(1);
    }
  }

}
81
ответ дан 24 November 2019 в 12:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: