>Java >java지도 시간 >Java 클래스 라이브러리-Guava-Throwables 클래스

Java 클래스 라이브러리-Guava-Throwables 클래스

黄舟
黄舟원래의
2017-01-19 13:25:391659검색

때때로 예외를 포착하면 예외를 다음 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)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.