Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #35407
| From | Eric Sosman <esosman@comcast-dot-net.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: What happens when format gets a wrong argument |
| Date | 2016-08-19 08:22 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <np6tm2$j64$1@dont-email.me> (permalink) |
| References | <87eg5lkd05.fsf@Equus.decebal.nl> <np59f7$vj5$1@dont-email.me> <np5fub$ai1$2@gioia.aioe.org> |
On 8/18/2016 7:21 PM, Arne Vajhøj wrote:
> On 8/18/2016 5:31 PM, Eric Sosman wrote:
>> On 8/18/2016 5:01 PM, Cecil Westerhof wrote:
>>> I had a function in ScheduledExecutorService where I changed a
>>> parameter for format from long to double, but I forgot to change the
>>> format string. The result was that the function gets an unchecked
>>> IllegalFormatConversionException and silently terminated on the format
>>> statement. Is this normal? And where do I find a good description
>>> about this?
>>
>> It's normal. Java's printf-inspired format strings are not quite
>> as good as C's, because C compilers (by and large) are able to sanity-
>> check the formats at compile time while JavaC doesn't (yet, anyhow).
>
> The C way is extremely practical/useful.
>
> But it is a bit mixing compiler and library responsibility. It
> must be a hardcoded special case in the compiler.
Yes. I don't see why javac could not have similar special
cases, but it doesn't. (They'd be subject to similar limitations,
too, but I think even an imperfect job would be better than none.)
As for "mixing responsibility" -- well, there's already plenty
of precedent in Java for the language to have "special knowledge" of
the class library. The compiler rejects `throw "error";', thus
revealing special knowledge of `Throwable'. The compiler knows
about `StringBuilder', and relies upon it for "language" features.
The compiler knows enough about the class library to do automatic
generation of `Integer.valueOf(n)' and `theDouble.doubleValue()'
and the like. It does not seem to me that adding knowledge of
`Formatter' would amount to a violation of purity -- there would be
practical difficulties, yes, but no loss of innocence.
--
esosman@comcast-dot-net.invalid
The Tooth Fairy has gone high-tech, now pays in Bitecoin.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
What happens when format gets a wrong argument Cecil Westerhof <Cecil@decebal.nl> - 2016-08-18 23:01 +0200
Re: What happens when format gets a wrong argument Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-08-18 17:31 -0400
Re: What happens when format gets a wrong argument Arne Vajhøj <arne@vajhoej.dk> - 2016-08-18 19:21 -0400
Re: What happens when format gets a wrong argument Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-08-19 08:22 -0400
Re: What happens when format gets a wrong argument Gene Wirchenko <genew@telus.net> - 2016-08-19 10:40 -0700
Re: What happens when format gets a wrong argument Arne Vajhøj <arne@vajhoej.dk> - 2016-08-19 20:19 -0400
Re: What happens when format gets a wrong argument Cecil Westerhof <Cecil@decebal.nl> - 2016-08-19 01:25 +0200
Re: What happens when format gets a wrong argument Arne Vajhøj <arne@vajhoej.dk> - 2016-08-18 19:31 -0400
Re: What happens when format gets a wrong argument Arne Vajhøj <arne@vajhoej.dk> - 2016-08-18 19:35 -0400
Re: What happens when format gets a wrong argument Cecil Westerhof <Cecil@decebal.nl> - 2016-08-19 07:23 +0200
csiph-web