Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #37777

Two exceptions

From Victor Porton <porton@narod.ru> (Victor Porton)
Newsgroups comp.lang.java.programmer
Subject Two exceptions
Date 2017-12-09 00:53 +1200
Organization fsxNet Usenet Gateway | bbs.geek.nz/#fsxNet
Message-ID <4199194256@f38.n261.z1.binkp.net> (permalink)

Show all headers | View raw


I am writing something like a recursive descent parser: That is, I inspect
object and its parts. When a part of an object is wrong, my method parse()
throws my exception ParseException. It is sometimes handled in parse() of a
higher-level object.

Example:

An object X may be either X1 or X2 or X3 class.

I try to call parse() for an object of X1 class. If it parses, the higher level
 parse() (for X) return X1 casted to X. If it fails with exception
ParseException, X2 is tried, and if that fails too X3 is tried.

Or for an object X I try calling parse() for subobjects Y and Z. If either
throws ParseException, the parse exception is propagated for parse() of X.

In this way, I consider an object and its possible parts. This is sometimes
called recursive descent.

But I want also FatalParseException meant to stop parsing of a file altogether
if it happens in the object or its subobject.

Human logic suggests that FatalParseException is a kind of ParseException and
so should be its subclass. But this way handling ParseException we would also
handle FatalParseException what is wrong, because FatalParseException is meant
to be handled only in the outer method, outside of all parse() methods.

So I have two alternatives:

1. Derive ParseException from FatalParseException what seems to do the right
thing but seems illogical.

2. Not derive either of these two exceptions from each other.

By the way, I am to rewrite an Ada project in Java (because the Ada compiler is
 too buggy and I can't work with it). In Ada all exceptions are independent (no
 exception is a subclass of another one).

--
Victor Porton - http://portonvictor.org

Back to comp.lang.java.programmer | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Two exceptions Victor Porton <porton@narod.ru> (Victor Porton) - 2017-12-09 00:53 +1200
  Re: Two exceptions Eric Sosman <esosman@comcast-dot-net.invalid> (Eric Sosman) - 2017-12-08 18:21 +1200
    Re: Two exceptions Victor Porton <porton@narod.ru> (Victor Porton) - 2017-12-09 01:55 +1200
      Re: Two exceptions Eric Sosman <esosman@comcast-dot-net.invalid> (Eric Sosman) - 2017-12-09 07:39 +1200
        Re: Two exceptions Victor Porton <porton@narod.ru> (Victor Porton) - 2017-12-10 02:39 +1200
          Re: Two exceptions Victor Porton <porton@narod.ru> (Victor Porton) - 2017-12-10 02:46 +1200
          Re: Two exceptions Kiwi User <martin@mydomain.invalid> (Kiwi User) - 2017-12-10 00:52 +1200
            Re: Two exceptions Kiwi User <martin@mydomain.invalid> - 2017-12-10 21:50 +0000
      Re: Two exceptions Patrick Roemer <sangamon@netcologne.de> (Patrick Roemer) - 2017-12-09 13:47 +1200
  Re: Two exceptions Arne Vajhøj <arne@vajhoej.dk> (Arne Vajhøj) - 2017-12-08 18:49 +1200
    Re: Two exceptions v_borchert@despammed.com (Volker Borchert) (Volker Borchert) - 2017-12-09 07:53 +1200
  Re: Two exceptions ram@zedat.fu-berlin.de (Stefan Ram) (Stefan Ram) - 2017-12-09 16:15 +1200
    Re: Two exceptions Eric Sosman <esosman@comcast-dot-net.invalid> (Eric Sosman) - 2017-12-09 14:55 +1200
      Re: Two exceptions Patrick Roemer <sangamon@netcologne.de> (Patrick Roemer) - 2017-12-11 15:09 +1200
        Re: Two exceptions Victor Porton <porton@narod.ru> - 2017-12-12 11:14 +0200

csiph-web