﻿# V759\. Violated the order of exception handlers\. Exception caught handler for the base class\.

The analyzer detected multiple exception handlers arranged in a wrong order\. The handler for base\-class exceptions is placed before the handler for derived\-class exceptions; therefore, every exception that must be caught by the derived\-class handler will be caught by the base\-class handler\.



Consider the following example:

```cpp
class Exception { .... };
class DerivedException : public Exception { ... };
void foo()
{
  throw DerivedException;
}

void bar()
{
  try
  {
    foo();
  }
  catch (Exception&)
  {
    // Every exception of type DerivedException will get here
  }
  catch (DerivedException&)
  {
    // Code of this handler will never execute
  }
}
```

Since `Exception` is the base class for the `DerivedException` class, all exceptions thrown by the `foo` function are caught by the first handler\.

To fix this error, we need to swap the handlers:

```cpp
void bar()
{
  try
  {
    foo();
  }
  catch (DerivedException&)
  {
    // Catches exceptions of type DerivedException
  }
  catch (Exception&)
  {
    // Catches exceptions of type Exception
  }
}
```

With this fix, each handler will catch only those exceptions it was meant to\.