場合によっては、例外をキャッチすると、その例外を次の try/catch ブロックに渡します。 Guava は、複数の例外を簡単にキャッチして再スローできる例外処理ユーティリティ クラスを提供します。
[code]import java.io.IOException; import org.junit.Test; import com.google.common.base.Throwables; public class ThrowablesTest { @Test public void testThrowables(){ try { throw new Exception(); } catch (Throwable t) { String ss = Throwables.getStackTraceAsString(t); System.out.println("ss:"+ss); Throwables.propagate(t); } } @Test public void call() throws IOException { try { throw new IOException(); } catch (Throwable t) { Throwables.propagateIfInstanceOf(t, IOException.class); throw Throwables.propagate(t); } } }
チェック例外を非チェック例外に変換します。例:
[code]import java.io.InputStream; import java.net.URL; import org.junit.Test; import com.google.common.base.Throwables; public class ThrowablesTest { @Test public void testCheckException(){ try { URL url = new URL("http://ociweb.com"); final InputStream in = url.openStream(); // read from the input stream in.close(); } catch (Throwable t) { throw Throwables.propagate(t); } } }
例外を渡すための一般的なメソッド:
1.RuntimeException の伝播 (Throwable): throwable を RuntimeException にラップし、このメソッドを使用して例外が確実に配信され、RuntimeException 例外をスローします。
2.void propagateIfInstanceOf(Throwable, Class) throws X: のインスタンスの場合に限り、throwable を渡します
4.void propagateIfPossible(Throwable, Class) throws X: RuntimeException の場合に限り、throwable を渡しますおよび Error、または X のインスタンス。
[code]import java.io.IOException; import org.junit.Test; import com.google.common.base.Throwables; public class ThrowablesTest { @Test public void testThrowables(){ try { throw new Exception(); } catch (Throwable t) { String ss = Throwables.getStackTraceAsString(t); System.out.println("ss:"+ss); Throwables.propagate(t); } } @Test public void call() throws IOException { try { throw new IOException(); } catch (Throwable t) { Throwables.propagateIfInstanceOf(t, IOException.class); throw Throwables.propagate(t); } } public Void testPropagateIfPossible() throws Exception { try { throw new Exception(); } catch (Throwable t) { Throwables.propagateIfPossible(t, Exception.class); Throwables.propagate(t); } return null; } }
1.投げ可能なgetRootcause(投げ可能)
2.リストgetCausalChain(投げ可能)
3.ストリングGetStackTraceAsString(投げ可能) class 関連コンテンツの詳細については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。