fall through

fall over | = F = | fan

fall through v.

(n. `fallthrough', var. `fall-through') 1. To exit a loop by exhaustion, i.e., by having fulfilled its exit condition rather than via a break or exception condition that exits from the middle of it. This usage appears to be really old, dating from the 1940s and 1950s. 2. To fail a test that would have passed control to a subroutine or some other distant portion of code. 3. In C, `fall-through' occurs when the flow of execution in a switch statement reaches a `case` label other than by jumping there from the switch header, passing a point where one would normally expect to find a `break`. A trivial example:

    switch (color)
    {
    case GREEN:
       do_green();
       break;
    case PINK:
       do_pink();
       /* FALL THROUGH */
    case RED:
       do_red();
       break;
    default:
       do_blue();
       break;
    }

The variant spelling `/* FALL THRU */` is also common.

The effect of the above code is to `do_green()` when color is `GREEN`, `do_red()` when color is `RED`, `do_blue()` on any other color other than `PINK`, and (and this is the important part) `do_pink()` and then `do_red()` when color is `PINK`. Fall-through is considered harmful by some, though there are contexts (such as the coding of state machines) in which it is natural; it is generally considered good practice to include a comment highlighting the fall-through where one would normally expect a break. See also Duff's device.

fall over | = F = | fan