### Using a Conditional Expression in a Throw Expression

You can use a conditional expression as a throw expression. as shown in the following example:

    // This example illustrates a conditional expresion
    // used as a throw expression.

    #include <iostream.h>
    void main() {
          int doit = 1;
          int dont = 0;
          float f = 8.9;
          int i = 7;
          int j = 6;
          try { throw(doit ? i : f); }
          catch (int x)
          {
                cout << "Caught int " << x << endl;
          }
          catch (float x)
          {
                cout << "Caught float " << x << endl;
          }
          catch (double x)
          {
                cout << "Caught double " << x << endl;
          }
          catch (...)
          {
                cout << "Caught something " << endl;
          }
    }

This example produces the following output because j is of type int:

    Caught float 7

At first glance, it looks as if the block that catches integer values should do the catch, but i is converted to a float value in the try block because it is in a conditional expression with the float value f. If the try block in the example is replaced with the following try block:

          try { throw doit ? i : j; }

The following output is produced:

    Caught int 7

Related Information

- Catching Exceptions
- Transferring Control
- Using Exception Handling
- Nested Try Blocks
- Rethrowing an Exception
- Exception Specifications