I'm using the following to catch an exception type and add more details:

```
        try
        {
            this.ApplyRules();
            return base.SaveChanges();
        }
        catch (DbEntityValidationException ex)
        {
            var sb = new StringBuilder();

            foreach (var failure in ex.EntityValidationErrors)
            {
                sb.AppendFormat("{0} failed validation\n", failure.Entry.Entity.GetType());
                foreach (var error in failure.ValidationErrors)
                {
                    sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                    sb.AppendLine();
                }
            }

            throw new DbEntityValidationException(
                "Entity Validation Failed - errors follow:\n" +
                sb.ToString(), ex
                ); // Add the original exception as the innerException
        }
        catch (Exception ex)
        {
            < some code here that would give me more detail about what the exception was >

            throw new Exception( );
        }

```

This works but now I would like to be able to catch the innerException.exceptionMessage for other types of exceptions. 

Is there a way I could add code to this that would include the lowest level innerException.exceptionMessage for all other exception types. Some code that would walk down the exception tree and pick up the final message?