If I understand what is meant by "internal" exceptions correctly, they
are often needed in order to permit static typechecking. In some APIs,
e.g., reflection, part of the functionality may be delegated to code that
is entirely unknown at compile-time, thus the set of possible exceptions
is open-ended. Using an internal exception allows the set of exceptions
that we do know to expect at compile-time to be explicitly declared,
providing tighter static typing than simply declaring "throws Throwable".
I could be wrong, but I suspect this happens mostly to sophisticated users, and
is NOT all that frequent relative to all users of Java. I doubt if adding this
either as a special class or (worse) by modifying Throwable is justified.
It just seems like creeping featurism.
I think that this is a good idea; it's not really adding a new feature, but providing a quality abstraction for one that already exists. In practice, I believe that it will increase the quality of information available after an exception is thrown.
This is now the draft feature list for Merlin as 4293532