/** * Copyright 2016 benjobs * <p> * 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 * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * 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 org.opencron.common.utils; /** * 异常处理类,以运行时异常的形式将指定的异常抛出 * */ public abstract class ExceptionHandler { /** * 抛出指定类型的异常信息<br/> * 注意: 这里的返回值只是为了绕过编译器的异常检查,不会真正返回 * * @param e * @return */ public static RuntimeException throwException(Throwable e) { if (e == null) { NullPointerException ex = new NullPointerException(); int size = ex.getStackTrace().length - 1; StackTraceElement[] st = new StackTraceElement[size]; System.arraycopy(ex.getStackTrace(), 1, st, 0, size); ex.setStackTrace(st); throw ex; } ExceptionHandler.<RuntimeException>throwException0(e); return null; } /** * 检查obj对象是否为空,如果为空,则抛出异常 * * @param obj 被检查的对象 * @param info 抛出异常的信息 */ public static void tryNullException(Object obj, String info) { tryNullException(obj, new NullPointerException(info)); } /** * 检查obj对象是否为空,如果为空,则抛出异常 * * @param obj 被检查的对象 * @param cause 抛出的异常 */ public static void tryNullException(Object obj, Exception cause) { if (obj == null) { throwException(cause); } } /** * 根据表达式判断是否抛出异常,如果表达式为真,则抛出异常 * * @param expression 布尔表达式 * @param info 抛出异常的信息 */ public static void tryThrowException(boolean expression, String info) { tryThrowException(expression, new RuntimeException(info)); } /** * 根据表达式判断是否抛出异常,如果表达式为真,则抛出异常 * * @param expression 布尔表达式 * @param cause 抛出的异常 */ public static void tryThrowException(boolean expression, Exception cause) { if (expression) { throwException(cause); } } /** * 将异常转换为特定类型异常抛出 * * @param e 异常 */ @SuppressWarnings("unchecked") private static <T extends Throwable> void throwException0(Throwable e) throws T { throw (T) e; } }