On 7/2/2013 8:29 PM, Xuelei Fan wrote:
On 7/3/2013 8:30 AM, Brad Wetmore wrote:
     http://cr.openjdk.java.net/~wetmore/8019341/webrev.01/

  261  // If both failed, return the curthread's exception.
  262  local.initCause(remote);

The mix the initial cause of the exception would make it hard to parse
the real cause of a exception.  I would like to dump both exception in
the log so that we would know both exceptions in client and server.

An exception can have both an init cause and one or more suppressed exceptions:

 Exception in thread "main" java.lang.Exception: Main block
  at Foo3.main(Foo3.java:7)
  Suppressed: Resource$CloseFailException: Resource ID = 2
          at Resource.close(Resource.java:26)
          at Foo3.main(Foo3.java:5)
  Suppressed: Resource$CloseFailException: Resource ID = 1
          at Resource.close(Resource.java:26)
          at Foo3.main(Foo3.java:5)
 Caused by: java.lang.Exception: I did it
  at Foo3.main(Foo3.java:8)

This is a very contrived example, but you'll see something that looks like this:

[brwetmor@flicker-vm1] 319 >java SSLSocketTemplate
Server died...
Exception in thread "main" java.lang.Exception: My client died...
        at SSLSocketTemplate.doClientSide(SSLSocketTemplate.java:127)
        at SSLSocketTemplate.startClient(SSLSocketTemplate.java:310)
        at SSLSocketTemplate.<init>(SSLSocketTemplate.java:191)
        at SSLSocketTemplate.main(SSLSocketTemplate.java:175)
        Suppressed: java.lang.Exception: Some kind of other problem
                at SSLSocketTemplate.<init>(SSLSocketTemplate.java:199)
                ... 1 more
Caused by: java.lang.Exception: Server problem
        at SSLSocketTemplate$1.run(SSLSocketTemplate.java:266)

Thanks,

Brad

Reply via email to