/*
* Copyright (c) 2016, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package org.glassfish.jersey.internal.util;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
The Exception Utils class provide utility method for exception handling.
Author: Stepan Vavra (stepan.vavra@oracle.com)
/**
* The Exception Utils class provide utility method for exception handling.
*
* @author Stepan Vavra (stepan.vavra@oracle.com)
*/
public final class ExceptionUtils {
private ExceptionUtils() {
}
Gets the stack trace of the provided throwable as a string.
Params: - t – the exception to get the stack trace for.
Returns: the stack trace as a string.
/**
* Gets the stack trace of the provided throwable as a string.
*
* @param t the exception to get the stack trace for.
* @return the stack trace as a string.
*/
public static String exceptionStackTraceAsString(Throwable t) {
StringWriter sw = new StringWriter();
t.printStackTrace(new PrintWriter(sw));
return sw.toString();
}
Based on the rethrow parameter, either rethrows the supplied exception or logs the provided message at the given level.
Params: - e – the exception to rethrow if rethrow is
true
. - rethrow – whether to rethrow an exception or just log the provided message.
- logger – the logger to print the message with.
- m – the message to log if rethrow is
false
. - level – the level of the logged message.
Type parameters: - <T> – the type of the exception to be conditionally rethrown.
Throws: - T – if rethrow is
true
.
/**
* Based on the rethrow parameter, either rethrows the supplied exception or logs the provided message at the given level.
*
* @param e the exception to rethrow if rethrow is {@code true}.
* @param rethrow whether to rethrow an exception or just log the provided message.
* @param logger the logger to print the message with.
* @param m the message to log if rethrow is {@code false}.
* @param level the level of the logged message.
* @param <T> the type of the exception to be conditionally rethrown.
* @throws T if rethrow is {@code true}.
*/
public static <T extends Exception> void conditionallyReThrow(T e, boolean rethrow, Logger logger, String m, Level level)
throws T {
if (rethrow) {
throw e;
} else {
// do not mask the other exception, just log this one
logger.log(level, m, e);
}
}
}