[loc-en-dev] Error handling in LocaleBuilder and forLanguageTag

Yoshito Umaoka y.umaoka at gmail.com
Tue Mar 3 19:07:40 PST 2009


We discussed about error handling behavior in the locale builder and the 
factory method Locale#forLanguageTag in the project conference call 
today. Doug summarized the current consensus below -

Builder:
- throw a runtime exception (for well managed inputs, caller does not 
require try-catch) on setters if ill-formed (including setLocale with a 
locale that has no canonical BCP47 form)
- remove createStrict()
- add setLanguageTag (and throw a runtime exception if ill-formed)
- throw null pointer exception for all null arguments.  setXXX is still 
used for clear the target internal field, but must use empty string "" 
for the purpose.

Locale.forLanguageTag
- throw null pointer exception for null argument
- continue supporting lenient behavior (no exception throw)

I think we probably do not need a dedicated class for the exception - 
probably just use IllegalArgumentException for Builder#setXXX.  (It 
might be too ambiguous for setLanguageTag, but for other cases, syntax 
check should be pretty simple, so call should be able to figure out the 
error before hand)

If anyone has any alternative proposal, please respond to this message.

-Yoshito



More information about the locale-enhancement-dev mailing list