[eluser]coolfactor[/eluser]
I've solved my problem by adhering to the current design and not passing in my custom error codes into show_error() (solution #2 posted above). Works fine.
[quote author="WanWizard" date="1284336049"]The status code MUST be a valid HTTP status code.
set_status_header() knows all valid codes, so if that fails, you are passing an illegal code. It is pointless wanting to extend the Exceptions class to support other status codes, as they will be invalid and should not be used.
I don't see the point of supporting (and silently ignoring) invalid status codes. Your code calls it, it should use a valid code.[/quote]
The point of Exceptions (in any language) is that custom exceptions (messages and codes) be defined, usually by subclassing the built-in Exception class. Am I wrong in assuming that CodeIgniter's Exceptions class is designed to facilitate the handling of this standard exceptions approach. Seems that it would facilitate the handling of exceptions in a CodeIgniter way.
Some online resources for your reading pleasure about exceptions in different languages:
PHP - <a href="http://php.net/manual/en/language.exceptions.php">http://php.net/manual/en/language.exceptions.php</a>
C++ - <a href="http://www.cplusplus.com/doc/tutorial/exceptions/">http://www.cplusplus.com/doc/tutorial/exceptions/</a>
Java - <a href="http://www.artima.com/designtechniques/exceptions.html">http://www.artima.com/designtechniques/exceptions.html</a>
You'll notice they all follow a common design for how Exceptions should be handled.