Как поймать и разобрать код ошибки IOException в Java? - PullRequest
0 голосов
/ 09 мая 2020
    ProcessBuilder processBuilder = new ProcessBuilder(file.getAbsolutePath());
    processBuilder.directory(file.getParentFile());

    try {
        processBuilder.start();
        System.exit(0);
    } catch(IOException ex) {
        ex.printStackTrace();
    }

Когда я использую C: //:

java .io.IOException: не удается запустить программу "C: \ Users \ User \ Documents \ NetBeansProjects \ UsefulTul ": CreateProcess error = 5, 被拒。

Когда я использую C: // sdfsdsfjsdi:

java .io .IOException: Невозможно запустить программу «c: \ sdfsdsfjsdi» (в каталоге «c: \»): CreateProcess error = 2, 找不到 指定 的 檔案。。

Как поймать error=<code> дюйм Java

1 Ответ

0 голосов
/ 09 мая 2020

Вы можете использовать регулярное выражение, чтобы получить ожидаемое значение из сообщения.

try {
    processBuilder.start();
    System.exit(0);
} catch(IOException ex) {
    String msg = ex.getMessage();
    Pattern pattern = Pattern.compile(".*(error=.*),.*");
    Matcher matcher = pattern.matcher(ex.getMessage());
    if (matcher.find()) {
        System.out.println("Result: " + matcher.group(1));
    }
}

Результат будет:

Result: error=2

Process finished with exit code 0

Примечание : в моем прогоне , error=2 было сообщением, переданным ex.getMessage(). В вашем случае все может быть иначе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...