I don't understand your proposal. You are trying to explain it in an almost formal way but I don't know what it means...
For eg. not sure what "ignored" means. Does it behave like a Runtime Exception? Or is it just not thrown? Same with the other 2 options. I think you could do a byte code processor and tweak checked exceptions but of course you would change signatures. --emi vin., 29 oct. 2021, 03:48 Owen Thomas <owen.paul.tho...@gmail.com> a scris: > G'day. > > Upon seeing some recent emails from this group expressing a somewhat > philosophical tone about how the evolving landscape of paradigms in > software development may be putting a strain on Java, I just wish to put > some comments that others might find interesting down about how a specific > Java feature, namely checked exceptions, can be improved so that again, > Java perhaps can show how to do something well enough that other languages > might try and copy it. > > I say the following. Have an abstract checked exception class in the Java > SE API. Call it, say, CheckedException. Descendents of this class behave > like any other checked exception, with perhaps a few caveats explained in > this email. > > The build script of a deployable artifact (an application or library, but > in this case, probably a library explains the situation more clearly) > somehow indicates that this deployable artifact (hereon referred to as a > library) can declare that descendents of CheckedExceptions (never the > CheckedException class itself) are: > > 1. thrown: A more specific descendent of a checked exception under > this clause occurs in the throws clause of a method that is exposed to > libraries that are dependent on this one. > > 2. caught: A more specific descendent of a checked exception under > this clause occurs in the catch block of a method that calls a method from > a library on which this one depends. > > 3. ignored: Neither of the above scenarios occurs. *However, methods > in this library that call methods that throw a descendent of a checked > exception under this clause do not themselves explicitly declare that they > throw or catch and deal with the given checked exception*. > > If a library declares that it throws or ignores a descendent of a > CheckedException, in its build script or other deployment descriptor, then > any dependent library must either declare that that CheckedException is > thrown, caught, or ignored. > > The emphasis above is used to underscore the utility that my suggestion is > trying to convey. I think that with perhaps a few tweaks, this is a > flexible suggestion. Although I do not (not yet perhaps... I just need a > compelling reason to) know much about Java modules, this system of > selectively dealing with checked exceptions appears as a very good > candidate for expression there. > > These are just suggestions and I put them out there because someone with > some clout in shaping the future of the Java SE API might think these > suggestions are worth considering further. Happy to share and perhaps to > talk about it here if others share a similar interest. > > Have a great day. :) > > Owen. >