code: public int getNetworkTimeoutSafely() throws SQLException {
          if(!mcf.supportsGetNetworkTimeout){
              if(TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "Returning default network timeout.", defaultNetworkTimeout);
              return defaultNetworkTimeout;
          }
          Throwable x;
          try{
              return getNetworkTimeout();
          } catch(AbstractMethodError e){
              // If we are running pre-Java7
              x = e;
          } catch(NoSuchMethodError e){
              // If the driver is pre-4.1
              x = e;
          } catch (SQLException e) {
              // In case the driver is not 4.1 compliant but says it is 
              String sqlMessge = e.getMessage() == null ? "" : e.getMessage();
              if (AdapterUtil.isUnsupportedException(e))
                  x = e;
              //try to catch any other variation of not supported, does not support, unsupported, etc.
              //this is needed by several JDBC drivers, but one known driver is DataDirect OpenEdge JDBC Driver
              else if(sqlMessge.contains("support"))
                  x = e;
              else
                  throw e;
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              Tr.debug(this, tc, "getNetworkTimeout support false due to " + x);
          mcf.supportsGetNetworkTimeout = false;
          return defaultNetworkTimeout;
      }
docs: Safely gets the NetworkTimeout.  This method differs from the original getNetworkTimeout() method
  by returning a default value when before JDBC-4.1 or on a driver that does not support getNetworkTimeout().
  @return The networkTimeout, or a default value if getNetworkTimeout is not supported by the driver, or
  the current JDBC runtime is pre-JDBC-4.1.