Java SocketChannel enhanceExceptionWithAddress(final SocketChannel channel, final IOException e)

Here you can find the source of enhanceExceptionWithAddress(final SocketChannel channel, final IOException e)

Description

Added a socket address to a message of an IOException.

License

LGPL

Parameter

Parameter Description
channel channel for that the error occurred.
e the I/O exception to enhance

Return

the enhanced IOException

Declaration

public static IOException enhanceExceptionWithAddress(final SocketChannel channel, final IOException e) 

Method Source Code

//package com.java2s;
/*/*from   w w  w  . j  a  v  a  2 s .co m*/
 * Cacheonix Systems licenses this file to You under the LGPL 2.1
 * (the "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *      http://www.cacheonix.org/products/cacheonix/license-lgpl-2.1.htm
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.io.IOException;

import java.net.SocketAddress;
import java.nio.channels.SocketChannel;

public class Main {
    /**
     * Added a socket address to a message of an IOException.
     *
     * @param channel channel for that the error occurred.
     * @param e       the I/O exception to enhance
     * @return the enhanced IOException
     */
    public static IOException enhanceExceptionWithAddress(final SocketChannel channel, final IOException e) {

        try {

            if (channel == null) {
                return e;
            }

            final SocketAddress socketAddress = channel.socket().getRemoteSocketAddress();
            if (socketAddress == null) {

                return e;
            }
            @SuppressWarnings("ObjectToString")
            final String socketAddressAsString = socketAddress.toString();
            final IOException result = new IOException(
                    e.getMessage() == null ? socketAddressAsString : socketAddressAsString + ':' + e.getMessage());
            result.setStackTrace(e.getStackTrace());
            return result;
        } catch (final Throwable ignored) {

            // If anything wrong happens, just return the original error
            return e;
        }
    }
}

Related

  1. createServerSocketChannel(int aPort, String aHostname)
  2. finishConnect(SocketChannel socketChannel)
  3. getConnectedSocketChannel(InetAddress host, int port, int timeout)
  4. getSocketAddress(SocketChannel socketChannel)
  5. getSocketDisplayString(SocketChannel channel)