test/java/lang/Throwable/SuppressedExceptions.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 24,34 ****
import java.io.*;
import java.util.*;
/*
* @test
! * @bug 6911258 6962571 6963622 6991528
* @summary Basic tests of suppressed exceptions
* @author Joseph D. Darcy
*/
public class SuppressedExceptions {
--- 24,34 ----
import java.io.*;
import java.util.*;
/*
* @test
! * @bug 6911258 6962571 6963622 6991528 7005628
* @summary Basic tests of suppressed exceptions
* @author Joseph D. Darcy
*/
public class SuppressedExceptions {
*** 48,65 ****
throwable.addSuppressed(throwable);
throw new RuntimeException("IllegalArgumentException for self-suppresion not thrown.");
} catch (IllegalArgumentException iae) {
; // Expected
}
-
- throwable.addSuppressed(null); // Immutable suppression list
- try {
- throwable.addSuppressed(throwable);
- throw new RuntimeException("IllegalArgumentException for self-suppresion not thrown.");
- } catch (IllegalArgumentException iae) {
- ; // Expected
- }
}
private static void basicSupressionTest() {
Throwable throwable = new Throwable();
RuntimeException suppressed = new RuntimeException("A suppressed exception.");
--- 48,57 ----
*** 151,163 ****
(byte)0x45, (byte)0x6c, (byte)0x65, (byte)0x6d, (byte)0x65, (byte)0x6e, (byte)0x74, (byte)0x3b,
(byte)0x02, (byte)0x46, (byte)0x2a, (byte)0x3c, (byte)0x3c, (byte)0xfd, (byte)0x22, (byte)0x39,
(byte)0x02, (byte)0x00, (byte)0x00, (byte)0x78, (byte)0x70,
};
! ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
! ObjectInputStream ois = new ObjectInputStream(bais);
!
Object o = ois.readObject();
Throwable throwable = (Throwable) o;
System.err.println("TESTING SERIALIZED EXCEPTION");
--- 143,154 ----
(byte)0x45, (byte)0x6c, (byte)0x65, (byte)0x6d, (byte)0x65, (byte)0x6e, (byte)0x74, (byte)0x3b,
(byte)0x02, (byte)0x46, (byte)0x2a, (byte)0x3c, (byte)0x3c, (byte)0xfd, (byte)0x22, (byte)0x39,
(byte)0x02, (byte)0x00, (byte)0x00, (byte)0x78, (byte)0x70,
};
! try(ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
! ObjectInputStream ois = new ObjectInputStream(bais)) {
Object o = ois.readObject();
Throwable throwable = (Throwable) o;
System.err.println("TESTING SERIALIZED EXCEPTION");
*** 165,174 ****
--- 156,166 ----
if (t0.length != 0) { // Will fail if t0 is null.
throw new RuntimeException(message);
}
throwable.printStackTrace();
}
+ }
private static void selfReference() {
Throwable throwable1 = new RuntimeException();
Throwable throwable2 = new AssertionError();
throwable1.initCause(throwable2);
*** 181,192 ****
throwable1.printStackTrace();
}
private static void noModification() {
! Throwable t = new Throwable();
! t.addSuppressed(null);
Throwable[] t0 = t.getSuppressed();
if (t0.length != 0)
throw new RuntimeException("Bad nonzero length of suppressed exceptions.");
--- 173,183 ----
throwable1.printStackTrace();
}
private static void noModification() {
! Throwable t = new NoSuppression(false);
Throwable[] t0 = t.getSuppressed();
if (t0.length != 0)
throw new RuntimeException("Bad nonzero length of suppressed exceptions.");
*** 194,200 ****
--- 185,210 ----
// Make sure a suppressed exception did *not* get added.
t0 = t.getSuppressed();
if (t0.length != 0)
throw new RuntimeException("Bad nonzero length of suppressed exceptions.");
+
+ Throwable suppressed = new ArithmeticException();
+ t = new NoSuppression(true); // Suppression enabled
+ // Make sure addSuppressed(null) throws an NPE
+ try {
+ t.addSuppressed(null);
+ } catch(NullPointerException e) {
+ ; // Expected
+ }
+ t.addSuppressed(suppressed);
+ t0 = t.getSuppressed();
+ if (t0.length != 1 || t0[0] != suppressed)
+ throw new RuntimeException("Expected suppression did not occur.");
+ }
+
+ private static class NoSuppression extends Throwable {
+ public NoSuppression(boolean enableSuppression) {
+ super("The medium.", null, enableSuppression);
+ }
}
}