I think the better pattern here is to have a method that returns an exception and then to throw that exception. Like:

    public static BoolToken eq(BitVector term1, BitVector term2, TermContext context) {
        if (term1.bitwidth() == term2.bitwidth()) {
            return term1.eq(term2);
        } else {
            throw failWithBitwidthMismatch(term1, term2);
        }
    }

  private static Exception failWithBitwidthMismatch(...) { return new IllegalArgumentException(...); }