RFR: 8200610: Compiling fails with java.nio.file.ReadOnlyFileSystemException [v2]

Jonathan Gibbons jjg at openjdk.org
Thu Dec 8 00:22:40 UTC 2022

On Thu, 17 Nov 2022 19:11:06 GMT, Archie L. Cobbs <duke at openjdk.org> wrote:

>> In `JavaCompiler`, when trying to write a class file, if an `IOException`s is thrown, instead of crashing, we report a normal error" `error while writing [file]: ...`.
>> However there are some I/O errors that can generate `RuntimeException`s not caught by this logic. So instead these errors cause a compiler crash.
>> An example is given in JDK-8200610, where the compiler tries to write into a ZIP file system and a `java.nio.file.ReadOnlyFileSystemException` is thrown.
>> This patch adds that exception and a couple of others which (in my estimation) could reasonably be expected to be thrown in various obscure cases involving alternative file systems: `FileSystemNotFoundException` and `InvalidPathException`.
>> Any suggestions on what the most appropriate list of exception types to include here are appreciated.
> Archie L. Cobbs has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains two additional commits since the last revision:
>  - Merge branch 'master' into JDK-8200610
>  - Catch and report some java.nio.file.* exceptions along with IOException.

src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java line 1643:

> 1641:                 if (results != null && file != null)
> 1642:                     results.add(file);
> 1643:             } catch (IOException | FileSystemNotFoundException | InvalidPathException | ReadOnlyFileSystemException ex) {

If we're hypothesizing plausible unchecked exceptions, maybe consider adding `UncheckedIOException` ?

I'd also recommend one exception per line, breaking the line before the `|`

} catch (IOException 
    | FileSystemNotFoundException 
    | InvalidPathException 
    | ReadOnlyFileSystemException 
    | UncheckedIOException ex) {


PR: https://git.openjdk.org/jdk/pull/10818

More information about the compiler-dev mailing list