Exceptions or not (Was: RE: ModSAX (SAX 1.1) Proposal)

David Megginson david at megginson.com
Wed Feb 17 16:04:15 GMT 1999


Jarle Stabell writes:

 > I haven't used Java much, so personally I don't know whether I find
 > this forced declarations of exception throwing a good thing.  (It
 > seems to me quite a lot of people throws in the towel and just
 > writes "throws exception")

Sure, it can get to that point, but then the exception falls off the
top level, and you still end up with some useful information about
where your bug was, so you're still better off than you would have
been.

Besides, "throws Exception" requires a conscious effort to turn off
the safety mechanisms.

 > If the typical case is (f.i.) : "I want Namespaces, X-Link, X-Schema and 
 > X-Pointer, and if I don't get all of these, I won't use you" (ie a 
 > conjunctive condition), then exceptions works very well, but if you don't 
 > want to throw in the towel the moment a single feature is not supported, 
 > exceptions could give uglier code than without them.

The two seem about the same length to me.  Here's the version with
exceptions:

  boolean hasNamespaces = true;
  boolean hasXLink = true;
  boolean hasDDML = true;
  boolean hasXPointer = true;

  try {
    parser.setFeature("com.foo.features.namespaces", true);
  } catch (SAXNotSupportedException e) {
    hasNamespaces = false;
  }

  try {
    parser.setFeature("com.foo.features.xlink", true);
  } catch (SAXNotSupportedException e) {
    hasXLink = false;
  }

  try {
    parser.setFeature("com.foo.features.ddml", true);
  } catch (SAXNotSupportedException e) {
    hasDDML = false;
  }

  try {
    parser.setFeature("com.foo.features.xpointer", true);
  } catch (SAXNotSupportedException e) {
    hasXPointer = false;
  }


Here's the version with boolean tests:

  boolean hasNamespaces = false;
  boolean hasXLink = false;
  boolean hasDDML = false;
  boolean hasXPointer = false;

  if (parser.supportsFeature("com.foo.features.namespaces")) {
    parser.setFeature("com.foo.features.namespaces", true);
    hasNamespaces = true;
  }

  if (parser.supportsFeature("com.foo.features.xlink")) {
    parser.setFeature("com.foo.features.xlink", true);
    hasXLink = true;
  }

  if (parser.supportsFeature("com.foo.features.ddml")) {
    parser.setFeature("com.foo.features.ddml", true);
    hasDDML = true;
  }

  if (parser.supportsFeature("com.foo.features.xpointer")) {
    parser.setFeature("com.foo.features.xpointer", true);
    hasXPointer = true;
  }


All the best,


David

-- 
David Megginson                 david at megginson.com
           http://www.megginson.com/

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)




More information about the Xml-dev mailing list