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