On 2/18/2012 3:13 PM, Andrei Alexandrescu wrote:
On 2/18/12 4:26 PM, Jonathan M Davis wrote (abridged):
GetOptException
FlagArgumentMissingException
InvalidFlagArgumentException
UnknownFlagException
FileException
FileNotFoundException
NotFileException
NotDirException
AccessDeniedException

I died inside a little.

Andrei


IMHO, I would not have made a GetOptException at all. It is too specific to the function. Since this is a type of parse error, I would prefer a ParseException base class. I think has a couple of advantages. One, the same exception can be used not only by the library itself but also by other users. Parsing is not an uncommon activity. Two, the exception hierarchy is orthogonal to the library. So changing the library functions---adding or removing them--- doesn't require changes in the exception hierarchy. Perhaps ParseException could then have a field that highlights the text that could not be parsed. This could be generally for all parsing type application.

In separating what should be a distinct type from what should be an attribute, I'd think you can use as a guideline whether the errors are likely to be handled in one place. I would guess that if you're going to try to analyze a parse error you would handle the possibilities of FlagArgumentMissingException, InvalidFlagArgumentException, and UnknownFlagException all in one place. You're not likely to catch one and let the others propagate upward. So those could be attribute you handle with a switch rather than separate types.


Jim

Reply via email to