RFR JDK-8087113: Websocket API and implementation

Seán Coffey sean.coffey at oracle.com
Thu Mar 31 14:52:35 UTC 2016


On 29/03/2016 20:16, Andrej Golovnin wrote:
>>> 177                             throw new IllegalArgumentException(String.valueOf(n));
>>> >>
>>> >>Could you please provide a better message for exception here?
>> >
>> >What would the purpose be? It's an internal implementation detail. If this
>> >exception is thrown, it means it's a bug in the implementation. And I highly
>> >doubt this error message would be of any help to an end-user. It's not something
>> >they can influence/change (most likely).
>> >What's important here is the stack-trace and te value. Maybe I will include more
>> >state to be printed.
> A good error message is gold worth. It may save you hours of debugging.
> Therefore if you can add more information to the exception message, then please
> do it as it will help you to find and to fix bugs faster.
>
I'd have to agree with Andrej here. Please always consider a decent 
exception message and give sustaining/support/end users & other 
developers a hint at what happened.
> Exception in thread "main" java.lang.IllegalArgumentException: 
> Negative value encountered in Subscription.request : -1
reads better than :
> Exception in thread "main" java.lang.IllegalArgumentException: -1
It'll help in searches and support forums for many years to come *if* a 
bug did exist in the implementation. Stacktraces can get lost also.

There seems to be a handful of areas where exception messages could be 
improved. Please consider enhancing all "new InternalError()" calls that 
have been added/modified :
e.g. : java/net/http/RawChannel.java

!         if (!(event instanceof NonBlockingEvent)) {
               throw new InternalError();
           }

let's print the type of event class received.

Other examples for better messaging :

java/net/http/MessagePublisher.java

> +            if ((state & BINARY_EXPECTED) == 0) {
> +                throw new IllegalStateException("Unexpected binary message");
> +            }
Let's print the state value etc. (even if just to confirm it's a value 
we expect) - There are a few other similar areas for improvement which 
should be simple enough to find from your webrev.

regards,
Sean.




More information about the net-dev mailing list