Manchmal, wenn wir eine Ausnahme abfangen, übergeben wir die Ausnahme an den nächsten Try/Catch-Block. Guava bietet eine Dienstprogrammklasse zur Ausnahmebehandlung, die einfach mehrere Ausnahmen abfangen und erneut auslösen kann.
[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); } } }
Geprüfte Ausnahmen in ungeprüfte Ausnahmen umwandeln, zum Beispiel:
[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); } } }
Gängige Methoden zum Übergeben von Ausnahmen:
1. RuntimeException propagieren (Throwable): throwable ist Als RuntimeException verpackt, verwenden Sie diese Methode, um die Ausnahmezustellung sicherzustellen, und werfen Sie eine RuntimeException
aus. 2.void propagateIfInstanceOf(Throwable, Class) löst X aus: Nur wenn es sich um eine Instanz von X handelt, übergeben Sie throwable
3.void propagateIfPossible(Throwable): Genau dann, wenn es sich um eine RuntimeException und einen Fehler handelt, übergeben Sie throwable
4.void propagateIfPossible(Throwable, Class) throws X: Genau dann, wenn es eine RuntimeException und einen Fehler ist eine RuntimeException und einen Fehler, oder wenn es sich um eine Instanz von X handelt, übergeben Sie throwable.
[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; } }
Guavas Ausnahmekettenbehandlungsmethode:
1. Throwable getRootCause(Throwable)
2. List getCausalChain(Throwable)
3. String getStackTraceAsString(Throwable)
Das Obige ist der Inhalt der Klasse Java-Class Library-Guava-Throwables. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!