The problem we're trying to prevent is unhelpful stack traces that don't contain
information about where the Exception was thrown from. This problem can
sometimes arise when an attempt is being made to cache or reuse a Throwable
(often, a particular Exception). In this case, consider whether this is really
is necessary: it often isn't. Could a Throwable simply be instantiated when
needed?

``` {.bad}
// this always has the same stack trace
static final MyException MY_EXCEPTION = new MyException("something terrible has happened!");
```

``` {.good}
throw new MyException("something terrible has happened!");
```

``` {.good}
static MyException myException() {
 return new MyException("something terrible has happened!");
}
```
