On Fri, 17 Dec 2021 18:02:10 GMT, Jonathan Gibbons <j...@openjdk.org> wrote:
>> Using a custom taglet may result in exceptions, not all of which are javadoc >> bugs. Some of these exceptions are taglet bugs. >> >> It was noticed that an exception in a static initializer of a custom taglet >> looks like a javadoc bug, which it is not. The fix was to trivially catch >> java.lang.ExceptionInInitializerError and translate it into an error like it >> is already done for some other exceptions. >> >> While working on this fix, I noticed that there were no tests that cover >> various exceptions that could arise while registering a taglet: >> >> * ClassNotFoundException >> * NoSuchMethodException >> * InstantiationException >> * InvocationTargetException >> >> I added a test to cover all of those as well as ExceptionInInitializerError >> and ClassCastException, which I proactively handled similarly to >> ExceptionInInitializerError. >> >> I note that a typical taglet-registration error message is quite poor and >> should be improved in the future. For example, it is unclear that the method >> that javadoc cannot find is the nullary (i.e. parameterless or no-arg) >> MyTaglet constructor: >> >> Error - Exception java.lang.NoSuchMethodException thrown while trying to >> register Taglet MyTaglet... > > test/langtools/jdk/javadoc/doclet/testCustomTagletRegistration/ExceptionInInitializerErrorTaglet.java > line 36: > >> 34: >> 35: static { >> 36: if (true) { > > Does the `if (true)` have any significance? > > javac will optimize it, per JLS. $ jshell | Welcome to JShell -- Version 17 | For an introduction type: /help intro jshell> public class Whatever { ...> ...> static { ...> throw new RuntimeException(); ...> } ...> } ...> | Error: | initializer must be able to complete normally | static { | ^-------... ------------- PR: https://git.openjdk.java.net/jdk18/pull/44