RFR: 8285488: Improve DocFinder [v4]

Jonathan Gibbons jjg at openjdk.org
Fri Oct 28 22:27:21 UTC 2022


On Fri, 28 Oct 2022 22:19:38 GMT, Jonathan Gibbons <jjg at openjdk.org> wrote:

>> In that comment I'm talking specifically about exception-type type parameters. Consider this interface:
>> 
>>     public interface MyInterface {
>> 
>>         static <X extends Throwable> void m(...) throws X { }
>>     }
>>     
>> Now, you can instantiate `X` like this:
>> 
>>     MyInterface.<EOFException>m(...);
>> 
>> But if you want `m` to declare that it can throw two exceptions, you cannot instantiate `X` like this:
>> 
>>     MyInterface.<EOFException | FileNotFoundException>m(...);
>> 
>> Or like this:
>> 
>>     MyInterface.<EOFException, FileNotFoundException>m(...);
>> 
>> You have to provide one exception type. It can either be a common ancestor of `EOFException` and `FileNotFoundException`; for example, `IOException`, `Exception` or `Throwable`. Or you can pack your exceptions into something else as a cause.
>> 
>> Whatever you choose, you won't get transparency and compile-time checking similar to what you'd get if you had this:
>> 
>>     static void m(...) throws FileNotFoundException, EOFException { }
>
> I don't (yet?) see why that language design issue arises here.   It looks like you're doing a multi-catch of a series of 4 subtypes of `Failure`, and an "other".  I don't see where any exception type parameter comes in.

Ah OK, there's one hidden in the signature of the `trySearch` method. Is that one important?

-------------

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


More information about the javadoc-dev mailing list