때때로 예외를 포착하면 예외를 다음 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)가 X를 발생시킵니다: X의 인스턴스인 경우에만 발생 가능
3을 전달합니다. void propagateIfPossible(Throwable): RuntimeException 및 오류인 경우에만 throwable
4.void propagateIfPossible(Throwable, Class)가 X를 발생시킵니다. RuntimeException 및 오류인 경우 또는 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; } }
Guava의 예외 체인 처리 방법:
1.Throwable getRootCause(Throwable)
2.List getCausalChain(Throwable)
3.String getStackTraceAsString( Throwable)
위 내용은 Java-Class Library-Guava-Throwables 클래스 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!