code: @Override
  	protected void handleException(final SqlContext sqlContext, final SQLException ex) throws SQLException {
  		SQLException cause = ex;
  
  		while (cause.getNextException() != null) {
  			cause = cause.getNextException();
  		}
  
  		if (LOG.isErrorEnabled() && isOutputExceptionLog()) {
  			StringBuilder builder = new StringBuilder();
  			builder.append(System.lineSeparator()).append("Exception occurred in SQL execution.")
  					.append(System.lineSeparator());
  			builder.append("Executed SQL[").append(sqlContext.getExecutableSql()).append("]")
  					.append(System.lineSeparator());
  			if (sqlContext instanceof SqlContextImpl) {
  				Parameter[] bindParameters = ((SqlContextImpl) sqlContext).getBindParameters();
  				for (int i = 0; i < bindParameters.length; i++) {
  					Parameter parameter = getSqlFilterManager().doParameter(bindParameters[i]);
  					builder.append("Bind Parameter.[INDEX[").append(i + 1).append("], ").append(parameter.toString())
  							.append("]").append(System.lineSeparator());
  				}
  			}
  			LOG.error(builder.toString(), cause);
  		}
  
  		throw cause;
  	}
docs: {@inheritDoc}
  
  @see jp.co.future.uroborosql.AbstractAgent#handleException(jp.co.future.uroborosql.context.SqlContext,
  java.sql.SQLException)