Можно также обернуть вывод cmdlet (или конвейер) в @()
, чтобы гарантировать, что то, что Вы возвращаете, является массивом, а не единственным объектом.
, Например, dir обычно возвращает список, но в зависимости от опций, он мог бы возвратить отдельный объект. Если Вы - планирование итерации через результаты с foreach-объектом, необходимо удостовериться, что Вы возвращаете список. Вот изобретенный пример:
$results = @( dir c:\autoexec.bat)
Еще одна вещь... пустой массив (любят инициализировать переменную) обозначен @()
.
№. 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);
}
}
}