These days, I have been reading a lot the [C++ F.A.Q](http://www.parashift.com/c++-faq-lite/) and especially [this page](http://www.parashift.com/c++-faq-lite/exceptions.html).

Reading through the section I discovered a "technique" that the author calls "exception dispatcher" that allows someone to group all his exception handling in one handy function:

```
void handleException()
{
  try {
    throw; // ?!
  }
  catch (MyException& e) {
    //...code to handle MyException...
  }
  catch (YourException& e) {
    //...code to handle YourException...
  }
}

void f()
{
  try {
    //...something that might throw...
  }
  catch (...) {
    handleException();
  }
}

```

What bothers me is the single `throw;` statement: if you consider the given example then sure, it is obvious what it does: it rethrows the exception first caught in `f()` and deals with it again.

But what if I call `handleException()` on its own, directly, without doing it from a `catch()` clause ? Is there any specified behavior ?

Additionally for bonus points, is there any other "weird" (probably not the good word) use of `throw` that you know of ?

Thank you.