// // Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. // package com.cloud.utils.exception; import java.io.PrintWriter; import java.io.StringWriter; public class ExceptionUtil { public static String toString(Throwable th) { return toString(th, true); } public static String toString(Throwable th, boolean printStack) { final StringWriter writer = new StringWriter(); writer.append("Exception: " + th.getClass().getName() + "\n"); writer.append("Message: "); writer.append(th.getMessage()).append("\n"); if (printStack) { writer.append("Stack: "); th.printStackTrace(new PrintWriter(writer)); } return writer.toString(); } @SuppressWarnings("unchecked") public static <T extends Throwable> void rethrow(Throwable t, Class<T> clz) throws T { if (clz.isAssignableFrom(t.getClass())) throw (T)t; } public static <T extends Throwable> void rethrowRuntime(Throwable t) { rethrow(t, RuntimeException.class); rethrow(t, Error.class); } }