Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #27684
| Newsgroups | comp.lang.java.programmer |
|---|---|
| Date | 2014-03-04 19:30 -0800 |
| References | <slrnlh1gp1.g8j.avl@login.logic.tuwien.ac.at> |
| Message-ID | <4333aee6-3526-4890-8d8a-fee04f9af69a@googlegroups.com> (permalink) |
| Subject | Re: telling the javac that a method doesn't return at all... |
| From | mike.s.schilling@gmail.com |
On Friday, February 28, 2014 9:10:57 AM UTC-8, Andreas Leitgeb wrote:
> May be a wish to the easter bunny, or I might just have missed it
>
> so far (like some easter egg)
>
>
>
> Suppose I have some "doCleanUpAndExit" method, that in the
>
> end either calls System.exit() or throws some Error or custom
>
> RuntimeException.
>
>
>
> I'd like the compiler to *know* that this method cannot possibly
>
> return, and that any code following it should be considered
>
> as "unreachable" code by the compiler.
>
>
>
> E.g., I'd have code like:
>
>
>
> class Foo {
>
> @DoesntReturn // tell compiler this method isn't supposed to return
>
> public void doCleanUpAndExit() {
>
> // compiler would barf if there was any "return"
>
> // or possible flow to end of method.
>
> throw new ThisIsTheEndException();
>
> // or System.exit(); which would itself need to be thusly flagged.
>
> }
>
> // test1() and test2() are boolean-returning methods...
>
> public boolean check() {
>
> if ( ! test1() ) { // aww, it's all borked up
>
> doCleanUpAndExit();
>
> // any further code here would make the compiler barf
>
> } else {
>
> return ( test2() );
>
> }
>
> // compiler should know that flow won't ever arrive here,
>
> // so there is no way that the method doesn't return a boolean..
>
> }
>
> }
>
>
>
> Did I miss some annotation that already does this?
>
> Is there anything like this already in the queue for
>
> future Java versions?
>
>
>
> Thanks in advance.
>
>
>
> PS: I've already defined a "WontEverGetHereException" to throw
>
> at certain places, where the compiler otherwise barfed about
>
> possible non-returning exits from value returning methods, so
>
> I'm rather asking out of curiosity for nicer solutions than
>
> facing a real problem. Still I'd rather have it a compile-time
>
> barf than a run-time barf if my assumptions were wrong w.r.t
>
> possible flow...
>
>
>
> PPS: any enlightenment about why this could be wrong-headed would
>
> also be appreciated, except if it boils down to pointing out the
>
> intended "exceptional" semantics of exceptions... Calling those
>
> non-returning methods itself would only happen exceptionally.
1. Define doCleanUpAndExit() to return, say, a bool.
2. Define a constructor WontEverGetHereException(bool). (WontEverGetHereException needs to be a RuntimeException.)
3. Exit via
throw new WontEverGetHereException(doCleanUpAndExit())
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
telling the javac that a method doesn't return at all... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-02-28 17:10 +0000
Re: telling the javac that a method doesn't return at all... Lew <lewbloch@gmail.com> - 2014-02-28 16:13 -0800
Re: telling the javac that a method doesn't return at all... Jeff Higgins <jeff@invalid.invalid> - 2014-03-01 09:12 -0500
Re: telling the javac that a method doesn't return at all... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-03-05 13:06 +0000
Re: telling the javac that a method doesn't return at all... Roedy Green <see_website@mindprod.com.invalid> - 2014-03-01 01:10 -0800
Re: telling the javac that a method doesn't return at all... Jeff Higgins <jeff@invalid.invalid> - 2014-03-01 08:44 -0500
Re: telling the javac that a method doesn't return at all... Arne Vajhøj <arne@vajhoej.dk> - 2014-03-01 22:02 -0500
Re: telling the javac that a method doesn't return at all... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-03-05 13:31 +0000
Re: telling the javac that a method doesn't return at all... Arne Vajhøj <arne@vajhoej.dk> - 2014-03-11 20:11 -0400
Re: telling the javac that a method doesn't return at all... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-03-12 10:17 +0000
Re: telling the javac that a method doesn't return at all... Mike Amling <mamling@chaff.us> - 2014-03-04 13:19 -0600
Re: telling the javac that a method doesn't return at all... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-03-05 13:39 +0000
Re: telling the javac that a method doesn't return at all... mike.s.schilling@gmail.com - 2014-03-04 19:30 -0800
Re: telling the javac that a method doesn't return at all... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-03-09 14:33 +0000
Re: telling the javac that a method doesn't return at all... Silvio <silvio@internet.com> - 2014-03-12 14:03 +0100
Re: telling the javac that a method doesn't return at all... Michal Kleczek <michal_wytnijto@kleczek.org> - 2014-03-19 11:51 +0100
Re: telling the javac that a method doesn't return at all... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-03-19 12:28 +0000
Re: telling the javac that a method doesn't return at all... Michal Kleczek <michal_wytnijto@kleczek.org> - 2014-03-23 11:15 +0100
csiph-web