OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



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

[ Lists Home | Date Index | Thread Index ]
  • From: David Megginson <david@megginson.com>
  • To: Jarle Stabell <jarle.stabell@dokpro.uio.no>
  • Date: Wed, 17 Feb 1999 10:59:30 -0500 (EST)

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

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

  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 Megginson                 david@megginson.com

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@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@ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo@ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@ic.ac.uk)


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS