具体点说,我现在出现了一个异常,printStackTrace()它之后,控制台里打印出:
java.sql.SQLException: Duplicate entry 'http://topic.csdn.net/u/20080722/21/25c6beb6-0aa3-460e-bec5-ab3e' for key 2
at test.htmlparser.ReadHtml.main(ReadHtml.java:37)
而我尝试着在SQLException e这个对象中获取上面这一长串字符串,失败了,最多只能获得下面这行字符串:
java.sql.SQLException: Duplicate entry 'http://topic.csdn.net/u/20080722/21/25c6beb6-0aa3-460e-bec5-ab3e' for key 2因此,最最重要的"at test.htmlparser.ReadHtml.main(ReadHtml.java:37)"获取不了,怎么样才能在程序中获取呢?

解决方案 »

  1.   

    用 log4j 自动生成日志。。
      

  2.   

    调用异常堆栈for(StackTraceElement ste:e.getStackTrace()){
    System.out.println(ste);
    }
      

  3.   

    SQLException 当然只能获取sql的异常了,那个at test.htmlparser.ReadHtml.main(ReadHtml.java:37)是编译器给出的吧
      

  4.   

    e.printStackTrace(System.out);把这个System。out换成到数据库字段的stream
      

  5.   

    log4j 本身就支持到数据库的操作,下一本 log4j的帮助文档去看吧
      

  6.   

    printStackTrace是使用Systems.err这个流打印出来的,这个流在pc电脑上默认是输出到显示器上的,你只需要用数据库的流把这个包装起来就行了。
      

  7.   

    楼主最好看一下Throwable这个类的源码,
    其中的printStackTrace(PrintStream ps)和printStackTrace(PrintWriter pw)方法都可以完成LZ的需求
    LZ只需要创建自己的PrintStream类或者PrintWriter类,覆盖里面的相应方法,就可以得到堆栈的内容了。
    LZ还可以对这些内容进行过滤,只保留需要的部分。 
      

  8.   

    “把这个System。out换成到数据库字段的stream”
    这个比较靠谱,可是能告诉我具体实现步骤吗?3q3q~~