. Следующий код предназначен для регистрации (не существующего) Пути для просмотра события файловой системы create
.Часть Stacktrace пропущена в Exception, регистрируя Path с WatchService для несуществующего файла.
Я вижу, что в трассировке стека отсутствуют некоторые детали.
public final class Test
{
public static void main(String[] args) throws Throwable
{
Path path = Paths.get("NonExistentFile.txt");
WatchService watchService = path.getFileSystem().newWatchService();
try
{
register(true, path, watchService);
}
catch (Exception e)
{
e.printStackTrace();
}
System.err.println();
try
{
WatchKey watchKey = register(false, path, watchService);
watchKey.cancel();
}
catch (Exception e)
{
e.printStackTrace();
}
}
static WatchKey register(boolean exception, Path path, WatchService watchService) throws IOException
{
if (exception)
throw new RuntimeException("Test Runtime Exception");
return path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);
}
}
Исключения трассировки стека:
java.lang.RuntimeException: Test Runtime Exception
at test.Test.register(Test.java:44)
at test.Test.main(Test.java:20)
java.nio.file.NoSuchFileException: NonExistentFile.txt
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.asIOException(UnixException.java:111)
at sun.nio.fs.LinuxWatchService$Poller.implRegister(LinuxWatchService.java:246)
at sun.nio.fs.AbstractPoller.processRequests(AbstractPoller.java:260)
at sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:329)
at java.lang.Thread.run(Thread.java:745)
Вопрос: Почему test.Test.register/main
не хватает во второй трассировки стека?
Потому что второй стек из другого потока, созданного WatchService. – RLM