你会捕捉异常吗?
异常简要信息(仅有出错原因):
Exception.getMessage() 或 Exception.toString ()
异常详细信息(有具体出错的行号):
Exception.printStackTrace()方法
Exception.getStackTrace()方法返回一个StackTraceElement对象的集合
1 /** 2 * 获取详细的异常信息的工具方法 3 */ 4 public static String getTrace(Throwable t) { 5 StringWriter stringWriter = new StringWriter(); 6 PrintWriter writer = new PrintWriter(stringWriter); 7 t.printStackTrace(writer); 8 StringBuffer buffer = stringWriter.getBuffer(); 9 return buffer.toString(); 10 } 11 12 13 public String getExceptionDetail(Exception e) { 14 StringBuffer stringBuffer = new StringBuffer(e.toString() + "\n"); 15 StackTraceElement[] messages = e.getStackTrace(); 16 int length = messages.length; 17 for (int i = 0; i < length; i++) { 18 stringBuffer.append("\t"+messages[i].toString()+"\n"); 19 } 20 return stringBuffer.toString(); 21 }
你会使用日志打印功能吗?
SLF4J(Simple logging Facade for Java):不是一个真正的日志实现,而是一个抽象层 。
1.它允许你在后台使用任意一个日志类库。使得你的程序独立于任意特定的日志类库,依赖于特定类可能需要不同与你已有的配置,并且导致更多维护的麻烦。
2.SLF4J提供了基于占位符的日志方法
(1)不再需要冗长的级别判断,提高了代码可读性。
(2)通过使用SLF4J,你可以在运行时延迟字符串的建立,这意味着只有需要的String对象才被建立。这不仅降低了你代码中字符串连接次数,而且还节省了新建的String对象。更少的暂时的字符串意味着GC这意味着你的应用程序有为更好的吞吐量和性能。
slf4j巧妙的解决了这个问题:先传入带有占位符的字符串,同时把其他参数传入,在slf4j的内容部实现中,如果级别合适再去用传入的参数去替换字符串中的占位符,否则不用执行。
例如:
logger.info("{} is {}", new String[]{“x",“y"});
logger.debug(
"Processing trade with id: {} and symbol : {} "
,
id
, symbol);
public
void
debug(String format, Object arg1, Object arg2) {
if
(logger.isDebugEnabled()) {
FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
}
}
注: 使用SLF4J,你不仅需要包含SLF4J的API jar包,例如 slf4j-api-1.6.1.jar,还需要相关Jar包,这取决于你在后台使用的日志类库。
如果你想要使用和Log4J 一起使用SLF4J ,你需要包含以下的Jar包在你的classpath中,取决于哪个SLF4J和你在使用的Log4J的版本。例如:
- slf4j-api-1.6.1.jar – JAR for SLF4J API
- log4j-1.2.16.jar – JAR for Log4J API
- slf4j-log4j12-1.6.1.jar – Log4J Adapter for SLF4J
如果使用Maven去管理你的项目依赖,你只需要包含SLF4J JAR包,maven会包含它的依赖的相关包。
SLF4J 1.7的版本及以上支持使用变量参数
引用:http://www.importnew.com/7450.html
你会项目打包吗?
使用maven打包:mvn package mvn clean package?
如果其他方式修改jar包中的内容而不修改源代码,mvn package将不能得到最新的jar或其他包
但最保险还是用 mvn clean install 生成最新的jar包或其他包
若不想用mvn clean又想保证jar包最新, 建议使用命令mvn package -Djar.forceCreation
,这个参数应该是强制创建新的jar包;
通过看源码中:如果满足以下任一情况,会认为jar包不是最新的:
1. jar包不存在(其实就是mvn clean的效果)
2. 传入比较的文件资源不存在
3. Resource with unknown modification date found,资源的修改时间未知
4. Resource with newer modification date found,jar包的最后修改时间比资源的最后修改时间早
注:
mvn package 会调用 maven-jar-plugin 这个插件进行打包。
mvn clean package -X
就能看到非常丰富的DEBUG信息。
引用:http://blog.csdn.net/abc86319253/article/details/44019881