RFR: 8255449: Improve the exception message of MethodHandles::permuteArguments

Chris Hegarty chegar at openjdk.java.net
Wed Oct 28 10:22:23 UTC 2020


On Wed, 28 Oct 2020 09:20:54 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> Hi,
>> 
>> Currently, if MethodHandles::permuteArguments is used with a reorder array that is the wrong size, or one of the indexes in it is out of bounds of the new type, we simply get the exception message:
>> 
>>     bad reorder array [...]
>> 
>> I think we can improve the exception message by splitting these two error cases, and saying in the message exactly what went wrong.
>> 
>> permuteArguments is a tricky API, so improving the error message here should help to improve developer productivity.
>> 
>> This PR proposes splits the error message into e.g.:
>> 
>>     old type parameter count and reorder array length do not match: (int,int,String)int, [0, 0]
>> 
>> For an incorrect reorder array length, and:
>> 
>>     index is out of bounds for new type: 2, (int,String)int
>> 
>> For an out of bounds index.
>> 
>> Thanks,
>> Jorn
>
> This looks okay to me. Someone from core-libs should take a look as well.
> 
> As the follow-up, maybe reconcile that method returns normally only with `true`, and throws exceptions otherwise. There are some uses like `assert(permuteArgumentChecks(...))` that apparently depend on this, how necessary are those?

Seems like a reasonable change. Is there an already existing test for "bad" permute args that could be expanded to discern the new exception message?

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

PR: https://git.openjdk.java.net/jdk/pull/878


More information about the core-libs-dev mailing list