8299475: Enhance SocketException by cause where it is missing in net and nio area

Reviewed-by: alanb
This commit is contained in:
Matthias Baesken 2023-01-05 08:26:38 +00:00
parent 2ccdefc81c
commit c929d8be5d
4 changed files with 25 additions and 8 deletions

View File

@ -299,7 +299,7 @@ public class ServerSocket implements java.io.Closeable {
} catch (SocketException e) {
throw e;
} catch (IOException e) {
throw new SocketException(e.getMessage());
throw new SocketException(e.getMessage(), e);
}
created = true;
}

View File

@ -531,8 +531,10 @@ public class Socket implements java.io.Closeable {
try {
impl.create(stream);
created = true;
} catch (SocketException e) {
throw e;
} catch (IOException e) {
throw new SocketException(e.getMessage());
throw new SocketException(e.getMessage(), e);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2022, 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
@ -363,7 +363,7 @@ class SocksSocketImpl extends DelegatingSocketImpl implements SocksConsts {
try {
privilegedConnect(server, serverPort, remainingMillis(deadlineMillis));
} catch (IOException e) {
throw new SocketException(e.getMessage());
throw new SocketException(e.getMessage(), e);
}
}

View File

@ -312,7 +312,8 @@ public final class NioSocketImpl extends SocketImpl implements PlatformSocketImp
connectionReset = true;
throw new SocketException("Connection reset");
} catch (IOException ioe) {
throw new SocketException(ioe.getMessage());
// throw SocketException to maintain compatibility
throw asSocketException(ioe);
} finally {
endRead(n > 0);
}
@ -410,7 +411,8 @@ public final class NioSocketImpl extends SocketImpl implements PlatformSocketImp
} catch (InterruptedIOException e) {
throw e;
} catch (IOException ioe) {
throw new SocketException(ioe.getMessage());
// throw SocketException to maintain compatibility
throw asSocketException(ioe);
} finally {
endWrite(n > 0);
}
@ -1084,7 +1086,7 @@ public final class NioSocketImpl extends SocketImpl implements PlatformSocketImp
} catch (SocketException e) {
throw e;
} catch (IllegalArgumentException | IOException e) {
throw new SocketException(e.getMessage());
throw asSocketException(e);
}
}
}
@ -1136,7 +1138,7 @@ public final class NioSocketImpl extends SocketImpl implements PlatformSocketImp
} catch (SocketException e) {
throw e;
} catch (IllegalArgumentException | IOException e) {
throw new SocketException(e.getMessage());
throw asSocketException(e);
}
}
}
@ -1249,6 +1251,19 @@ public final class NioSocketImpl extends SocketImpl implements PlatformSocketImp
return remainingNanos;
}
/**
* Creates a SocketException from the given exception.
*/
private static SocketException asSocketException(Exception e) {
if (e instanceof SocketException se) {
return se;
} else {
var se = new SocketException(e.getMessage());
se.setStackTrace(e.getStackTrace());
return se;
}
}
/**
* Returns the socket protocol family.
*/