• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Nested Enum Error
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Nested Enum Error


  • Subject: Re: Nested Enum Error
  • From: Dave Hersey <email@hidden>
  • Date: Fri, 21 Mar 2008 00:17:15 -0400

Yeah, there are problems with doing it that way. I'd do something like:

typedef enum DeductionLineErrors {
	e_DL_NoError = 0,						// no err
	e_DL_LineNumberExistsError = 1,			// blah
	e_DL_WTFError = 2						// blah blah!
} DeductionLineErrors;

typedef enum DeductionLineSequentErrors {
	e_DLS_NoError = 0,						// no err
	e_DLS_LineNumberExistsError = 1000,	// blah
	e_DLS_WTFError = 1001					// blah blah!
} DeductionLineSequentErrors;

In other words, type the enums (optional, but more readable and you can use the types in code) and more importantly, use unique enum names to help prevent confusion when returning the errors from your different classes or chunks of code. Even more importantly, don't overlap the values you're using, except for "no error". It makes it a lot easier to track down the source of an error if only one error has a value of 1001, for example. By the time that error gets propagated to your log or interface, you may have no other clue what the original problem was and which class or chunk of code it came from.

- d

On Mar 20, 2008, at 11:31 PM, K. Darcy Otto wrote:
I've been trying to add some human-readable error codes to my classes using enum, but have been running into some difficulties when I add a different enum of the same name to a different class. Here is what I have so far in my DeductionLine class (and I think it will suffice just to show the interface:

@interface DeductionLine : NSObject {

Dependency *dependency;
LineNumber *lineNumber;
Formula *formula;
Justification *justification;
BOOL wfdl; // well-formed deduction line

enum Error
{
noError = 0, // everything ok
dependencyExistError = 1, // dependency does not exist
lineNumberExistError = 2, // line number does not exist
formulaFormError = 3, // formula is not a wff
justificationFormError = 4, // justification is not a wfj
justificationReferenceError = 5, // justification references lines greater or equal to lineNumber
justificationMatchError = 6 // justification is $I, but main connective of formula does not correspond to $
} errorCode;

}


Now, I know the =0, =1 is redundant, but I want it there for ease of reading, just in case the programmer wants to output errorCode to a log (which will result in an integer, which can then be looked up in the interface). This works fine in this class: I can write: "errorCode = noError;" or whatever, and everything is happy. But when I try to do something similar in the DeductionLineSequent class, there is no end to compiler complaining:

@interface DeductionLineSequent : NSObject {

	NSArray *sequent;
	NSArray *additionalFormulae;
	BOOL valid;

	enum Error
	{
		noError = 0, // everything ok
		dependencyError = 1, // dependency sequent invalid
		lineNumberError = 2, // line number sequent invalid
		formulaError = 3, // formula sequent invalid
	} errorCode;
}

I get "nested redefinition of 'enum Error'", (ii) "redeclaration of 'enum Error'" and (iii) redeclaration of enumerator 'noError'. So, I have two questions: is it possible to get each enum local to the class in which it is defined (so it does not seem to be "nested")? Second, is there a better strategy for defining human-readable error codes? Thanks.
_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >Nested Enum Error (From: "K. Darcy Otto" <email@hidden>)

  • Prev by Date: Debugging an input manager that refuses to load
  • Next by Date: [Mini Announce] Leopard style tabs that need your help
  • Previous by thread: Re: Nested Enum Error
  • Next by thread: Debugging an input manager that refuses to load
  • Index(es):
    • Date
    • Thread