package org.nutz.ioc; import java.util.ArrayList; import java.util.List; import org.nutz.lang.Strings; public class IocException extends RuntimeException { private static final long serialVersionUID = -420118435729449317L; public List<String> beanNames = new ArrayList<String>(); public IocException(String beanName, String format, Object ...args) { super(String.format(format, args)); beanNames.add(beanName); } public IocException(String beanName, Throwable cause, String format, Object ...args) { super(String.format(format, args), cause); beanNames.add(beanName); } public void addBeanNames(String beanName) { if (!beanNames.contains(beanName)) beanNames.add(0, beanName); } public String getMessage() { String msg = super.getMessage(); if (msg.length() > 4096) return msg; return "IocBean[" + Strings.join(" -> ", beanNames.toArray()) + "] " + msg; } }