其实没什么可以记载的。只是当时头晕,一直犯晕,故记录下来,防止再次犯晕。
系统中配置的错误页500.jsp。有需求是在该jsp中记录错误日志信息,当时调用了后台封装的一个组合Exception信息的方法:
public static String getStackTraceMessage(Exception e){ String message=""; message+=e+"\n"; StackTraceElement[] traces = e.getStackTrace(); if(traces!=null && traces.length>0){ for(StackTraceElement element:traces){ message+="\tat "+element.getClassName()+"."+element.getMethodName()+"("+ element.getFileName()+":"+element.getLineNumber()+")\n"; } } return message; }
用于记录详细的异常信息。
BUT!这个是有错误的!错误信息如下:
/WEB-INF/pages/errorpage/500.jsp:14: error: method getStackTraceMessage in class ExceptionCommonUtil cannot be applied to given types; logger.info("\u7a0b\u5e8f\u51fa\u73b0\u5f02\u5e38\uff1a{}", ExceptionCommonUtil.getStackTraceMessage(exception)); ^ required: Exception found: Throwable reason: actual argument Throwable cannot be converted to Exception by method invocation conversion 1 error 1 warning
唉,原来jsp里面内置的exception对象是Throwable的实例。而Throwable是Exception的父类,父类转化成子类需要强转。
后来就琢磨重载一下组合方法吧,在方法里将jsp传过来的exception强转成Exception再调用原来的方法。可是又想起Throwable的子类除了Exception还有Error,虽然情况很少
出现甚至没有(没有查证),但这种设计终归不完美。
最后同事提醒了一句:为什么不用slf4j的logger.error方法啊...为什么....为...
以此文谨记我可爱的同事,谨记我的榆木疙瘩!
时间: 2024-11-05 17:32:19