On Fri, Aug 3, 2012 at 6:17 AM, DAvid Cosgrove
<[email protected]> wrote:
> Hi,
>
>
>
> It’s a minor point in the discussion, maybe, but Meyers’ ‘More Effective
> C++’ recommends always catching exceptions by reference.  It’s quicker than
> catching by value because it avoids copy construction, and, more
> importantly, it avoids the problem of class slicing if a derived class
> exception object is caught as a base exception.
>
>
>
> Paul’s code snippet becomes
>
>
>
> try {
>    rwmol = SmilesToMol(smiles_strings[i]);
>    // cool stuff here...
> }
> catch (RDKit::MolSanitizeException &msg) {
>     // do something (or nothing)...
>    std::cout << msg.what() << std::endl;
> }
>

Dave is definitely right here: this is how you should handle things if
you want to deal specifically with different exception times.

The RDKit python wrapper for building molecules from SMILES
($RDBASE/Code/GraphMol/Wrap/rdmolfiles.cpp) does the following:

    RWMol *newM;
    try {
      newM = SmilesToMol(smiles,0,sanitize,&replacements);
    } catch (...) {
      newM=0;
    }
    return static_cast<ROMol *>(newM);

the Python wrapper always returns a None when the molecule cannot be
processed (no matter the reason), so I don't need to do anything with
the exception and I don't care what type it is. Consequently I use the
less than elegant form above.

-greg

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Rdkit-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to