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 李贊紅 閱讀(4444) 評論(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)

          相冊

          技術友情博客

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 铜梁县| 通江县| 花垣县| 台州市| 灯塔市| 桦甸市| 荣昌县| 静安区| 龙门县| 乌苏市| 阜平县| 靖安县| 祁东县| 衡南县| 西贡区| 蚌埠市| 瑞金市| 沈丘县| 乾安县| 望都县| 万山特区| 若尔盖县| 乐至县| 遂宁市| 渑池县| 高邑县| 温泉县| 宜宾县| 东台市| 阿荣旗| 建水县| 滨海县| 钟山县| 敖汉旗| 浮梁县| 成都市| 广安市| 西和县| 杭锦后旗| 赣榆县| 汕头市|