src/main/java/org/vibur/dbcp/ViburDBCPDataSource.java
@Override
    public void start() throws ViburDBCPException {
        try {
            doStart();
            logger.info("Started {}", this);
        } catch (IllegalStateException e) {
            throw new ViburDBCPException(e);
        } catch (IllegalArgumentException | NullPointerException | ViburDBCPException e) {
            logger.error("Unable to start {} due to:", this, e);
            terminate();
            throw e instanceof ViburDBCPException ? e : new ViburDBCPException(e);
        }
    }
@Override
    public void start() throws ViburDBCPException {
        try {
            doStart();
            logger.info("Started {}", this);
        } catch (IllegalStateException e) {
            throw new ViburDBCPException(e);
        } catch (IllegalArgumentException | NullPointerException | ViburDBCPException e) {
            logger.error("Unable to start {} due to:", this, e);
            terminate();
            throw e instanceof ViburDBCPException ? e : new ViburDBCPException(e);
        }
    }
@ Override public void start ( ) throws ViburDBCPException { try { doStart ( ) ; logger . info ( "Started {}" , this ) ; } catch ( IllegalStateException e ) { throw new ViburDBCPException ( e ) ; } catch ( IllegalArgumentException | NullPointerException | ViburDBCPException e ) { logger . error ( "Unable to start {} due to:" , this , e ) ; terminate ( ) ; throw e instanceof ViburDBCPException ? e : new ViburDBCPException ( e ) ; } }
{@inheritDoc}

@throws ViburDBCPException if not in a {@code NEW} state when started;
if a configuration error is found during start;
if cannot start this DataSource successfully, that is, if cannot successfully
initialize/configure the underlying SQL system, if cannot create the underlying SQL connections,
if cannot initialize the configured/needed JDBC Driver, if cannot create the configured pool reducer,
or if cannot initialize JMX
{ @inheritDoc }