On Tue, 27 Sep 2022 12:14:23 GMT, Pavel Rappo <pra...@openjdk.org> wrote:

>> This adds exception documentation to JDK methods that would otherwise lose 
>> that documentation once JDK-8287796 is integrated. While adding this 
>> exception documentation now does not change [^1] the JDK API Documentation, 
>> it will automatically counterbalance the effect that JDK-8287796 will have.
>> 
>> JDK-8287796 seeks to remove an old, undocumented, and esoteric javadoc 
>> feature that cannot be suppressed [^2]. The feature is so little known about 
>> that IDEs either do not implement it correctly or do not implement it at 
>> all, thus rendering documentation differently from how the javadoc tool 
>> renders it.
>> 
>> That feature was introduced in JDK-4947455 and manifests as follows. If a 
>> method inherits documentation for an exception, along with that 
>> documentation the method automatically inherits documentation for all 
>> exceptions that are subclasses of that former exception and are documented 
>> in an overridden method.
>> 
>> To illustrate that behavior, consider the following example. A method 
>> `Subtype.m` inherits documentation for `SuperException`, while the 
>> overridden method `Supertype.m` documents `SuperException`, `SubExceptionA` 
>> and `SubExceptionB`, where the latter two exceptions are subclasses of the 
>> former exception:
>> 
>>     public class Subtype extends Supertype {
>> 
>>         @Override
>>         public void m() throws SuperException {
>>     ...
>> 
>>     public class Supertype {
>> 
>>         /**
>>          * @throws SuperException general problem
>>          * @throws SubExceptionA  specific problem A
>>          * @throws SubExceptionB  specific problem B
>>          */
>>         public void m() throws SuperException {
>>     ...
>> 
>>     public class SuperException extends Exception {
>>     ...
>> 
>>     public class SubExceptionA extends SuperException {
>>     ...
>> 
>>     public class SubExceptionB extends SuperException {
>>     ...
>> 
>> For the above example, the API Documentation for `Subtype.m` will contain 
>> documentation for all three exceptions; the page fragment for `Subtype.m` in 
>> "Method Details" will look like this:
>> 
>>     public void m()
>>            throws SuperException
>> 
>>     Overrides:
>>         m in class Supertype
>>     Throws:
>>         SuperException - general problem
>>         SubExceptionA - specific problem A
>>         SubExceptionB - specific problem B 
>> 
>> It works for checked and unchecked exceptions, for methods in classes and 
>> interfaces.
>> 
>> 
>> If it's the first time you hear about that behavior and this change affects 
>> your area, it's a good opportunity to reflect on whether the exception 
>> documentation this change adds is really needed or you were simply unaware 
>> of the fact that it was automatically added before. If exception 
>> documentation is not needed, please comment on this PR. Otherwise, consider 
>> approving it.
>> 
>> Keep in mind that if some exception documentation is not needed, **leaving 
>> it out** from this PR might require a CSR.
>> 
>> 
>> [^1]: Aside from insignificant changes on class-use and index pages. There's 
>> one relatively significant change. This change is in jdk.jshell, where some 
>> methods disappeared from "Methods declared in ..." section and other 
>> irregularities. We are aware of this and have filed JDK-8291803 to fix the 
>> root cause.
>> [^2]: In reality, the feature can be suppressed, but it looks like a bug 
>> rather than intentional design. If we legitimize the feature and its 
>> suppression behavior, the model for exception documentation inheritance 
>> might become much more complicated.
>
> Pavel Rappo has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   revert an extraneous change to jdk.javadoc

The updates to the channel classes look okay.

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

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

Reply via email to