Java海闊天空

          編程是我的生活,但生活不僅僅是編程。

          打印異常的堆棧信息

          package com.aptech.print;
          import java.io.ByteArrayOutputStream;
          import java.io.PrintStream;
          public class Test {
          /**
               * 獲取Exception的堆棧新息。用于顯示出錯來源時使用。
               * @param e
               *            Exception對象
               * @param length
               *            需要的信息長度,如果 <=0,表示全部信息
               * @return String 返回該Exception的堆棧新息
               * @author 李贊紅
               */
          public static String getErrorStack(Exception e, int length) {
            String error = null;
            if (e != null) {
             try {
              ByteArrayOutputStream baos = new ByteArrayOutputStream();
              PrintStream ps = new PrintStream(baos);
              e.printStackTrace(ps);
              error = baos.toString();
              if (length > 0) {
               if (length > error.length()) {
                length = error.length();
               }
               error = error.substring(0, length);
              }
              baos.close();
              ps.close();
             } catch (Exception e1) {
              error = e.toString();
             }
            }
            /*
             * try{ String str=new String(error.getBytes("ISO-8859-1"),"GBK");
             * return str; }catch(Exception e1) { e1.printStackTrace(); }
             */
            return error;
          }

          public static void main(String[] args) {
            try {
             Integer.parseInt("中華人民共和國");
            } catch (NumberFormatException e) {
             String s = Test.getErrorStack(e, 0);
             System.out.println("異常信息:" + s);
            }
            
          }
          }

          posted on 2008-07-04 09:38 李贊紅 閱讀(4441) 評論(5)  編輯  收藏

          評論

          # re: 打印異常的堆棧信息 2008-07-05 21:35 nicky

          需要這么玩嗎  回復  更多評論   

          # re: 打印異常的堆棧信息 2008-07-07 08:33 李贊紅

          to:nicky
          很多時候都需要的。只是你沒碰到過吧。  回復  更多評論   

          # re: 打印異常的堆棧信息 2008-10-23 11:19 baozhang

          有用,謝謝  回復  更多評論   

          # re: 打印異常的堆棧信息 2009-06-14 15:04 Robin's Java World

          try {
          Integer.parseInt("中華人民共和國");
          } catch (NumberFormatException e) {
          e.printStackTrace();

          String s = Test.getErrorStack(e, 0);
          System.out.println("異常信息:" + s);
          }

          打印結果如下:
          java.lang.NumberFormatException: For input string: "中華人民共和國"
          at java.lang.NumberFormatException.forInputString(Unknown Source)
          at java.lang.Integer.parseInt(Unknown Source)
          at java.lang.Integer.parseInt(Unknown Source)
          at ttt.main(ttt.java:42)
          異常信息:java.lang.NumberFormatException: For input string: "中華人民共和國"
          at java.lang.NumberFormatException.forInputString(Unknown Source)
          at java.lang.Integer.parseInt(Unknown Source)
          at java.lang.Integer.parseInt(Unknown Source)
          at ttt.main(ttt.java:42)


          請問需要這么大動干戈嗎?  回復  更多評論   

          # re: 打印異常的堆棧信息 2011-02-25 23:13 landonlv

          你好,我想了解一下:打印堆棧異常信息的時候,(Unknown Source)什么時候會出現?  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          <2008年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          常用鏈接

          留言簿(12)

          隨筆檔案(28)

          相冊

          技術友情博客

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 彰化县| 丰顺县| 涟源市| 千阳县| 肇州县| 航空| 龙里县| 特克斯县| 云南省| 泸水县| 疏附县| 北流市| 潞西市| 泸西县| 聂拉木县| 韩城市| 衡水市| 观塘区| 青铜峡市| 龙陵县| 河北省| 西贡区| 祁阳县| 崇阳县| 明溪县| 辽宁省| 清水县| 英德市| 武义县| 徐水县| 郸城县| 三明市| 黔西县| 健康| 连云港市| 新巴尔虎右旗| 宁津县| 腾冲县| 佛坪县| 体育| 台东县|