Something that doesn't happen on a typical run of the program. I wouldn't put a number on it, but if you were to imagine your program being run many times, you should not expect an exception to be thrown at all during a large percentage of those runs. Generally, no user errors, since users make errors all the time. Applications can be different however, so it's only a rule of thumb.