RE: SNACC::SnaccException and CML::ASN::Exception

"Nicholas, Richard" <[email protected]> Tue, 16 Mar 2004 16:12:15 -0500
Newsgroups gmane.ietf.sfl
Message-ID <[email protected]>
John,

Good suggestion.  We'll combine the CML errors into the shared error
number space in the next version.  By eliminating the need to store CML
errors in a different exception class, applications can simply catch
SnaccExceptions.

- Rich
-------------------
Richard E. Nicholas
Secure Systems Consultant
DigitalNet Government Solutions
[email protected]
(301) 939-2722

-----Original Message-----
From: John Stark [mailto:[email protected]]
Sent: Tuesday, March 16, 2004 2:11 PM
To: [email protected]
Subject: SNACC::SnaccException and CML::ASN::Exception



Hello,

I notice that most of the SFL 2.3 code now throws the exception class
SNACC::SnaccException, which contains an error code, a string and a call
stack, and is defined in SNACC's snaccexcept.h.

However parts of the CML code use a subclass of Snacc::SnaccException
CML::ASN::Exception, which only adds a separate error code of its own. 
The CML errors don't occupy the same number space as the other SFL
errors, and as far as I can tell, when a CML::ASN::Exception is thrown
the base SNACC::SnaccException's m_errorCode member is left set to a
meaningless value.

Would it not be better to abolish the separate CML::ASN::Exception
subclass, use SNACC::SnaccException throughout, and renumber the CML
error codes into the same number space as the error codes used
elsewhere?  This would save all my functions that use SFL having to
contain double catch handlers like:

try
{
  // code that calls SFL methods ...
}
catch (CML::ASN::Exception &e)
{
  // cleanup code ...
  error_code   = static_cast<CML::ASN::Error>(e);
  error_string = CMU_GetErrorString(error_code);
}
catch (SNACC::SnaccException &e)
{
  // duplicated cleanup code ...
  error_code = e.m_errorCode();
  // my own code to map SFL error codes to strings
}

-- 
John Stark
Tel: +44 1223 566732
Mobile: +44 7968 110628
E-mail: [email protected]
Web: http://www.metanate.com