@Override
	public List<Invoker<T>> list(Invocation invocation) throws RpcException {
		if (isDestroyed()) {
			throw new RpcException("Directory already destroyed .url: " + tpURL);
		}
		List<Invoker<T>> invokers = doList(invocation);
        if (routers != null && routers.size() > 0) {
            for (Router router: routers){
                try {
                        invokers = router.route(invokers, tpURL, invocation);
                } catch (Throwable t) {
                    logger.error("Failed to execute router: " + tpURL + ", cause: " + t.getMessage(), t);
                }
            }
        }
        return invokers;
	}