String () { final String errorMessage = super.getMessage(); if (errorMessage != null) { return errorMessage; } final Throwable cause = getCause(); final String causeMessage = cause != null ? cause.getMessage() : null; if (causeMessage != null) { return causeMessage; } return "unknown error"; }