Many implementations still do not support exception handling very well. Therefore, you can implement, using global variables and passing a parameter to the constructor, instead. However, on implementations that support exception handling, throwing an exception is the preferred method of reporting runtime errors during an object’s construction. The advantages of exceptions are better support for object-oriented programming, simpler and more readable code, safety, and automation. The constructor in this example throws an exception to report an error:
class X { //exception classpublic: X(const char* description);//