001    /*
002     * Copyright (c) 2009 The openGion Project.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *     http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013     * either express or implied. See the License for the specific language
014     * governing permissions and limitations under the License.
015     */
016    package org.opengion.hayabusa.common;
017    
018    /**
019     * 共通的に使用されるエクセプションクラスです?
020     *
021     * RuntimeException を継承して?ため、try{} catch() {} は不要です?
022     * 本シス?では、すべてこ?エクセプションクラスを継承させたクラスを作?し?用途によって?
023     * 使??けるようにします?つまり?他?どのような、Throwable が発生したとしても???
024     * try{} catch() {} で受けて、このクラスのサブクラスを?再度 throw させます?
025     * そして、?であれば、try{} catch() {} を用?捕まえて、それぞれ?対応??行います?
026     *
027     * こ?クラスには、???発生したエクセプション( Throwable )を引数にとり?
028     * そ? printStackTrace()??を?自??身のトレース??に含めます?
029     * また?引数にオブジェクトを渡すことができます?で、object.toString() で、オブジェクト?
030     * 状態を表示できるようにしておけば、手軽に??に使?とが可能になります?
031     *
032     * @og.group エラー処?
033     *
034     * @version  4.0
035     * @author   Kazuhiko Hasegawa
036     * @since    JDK5.0,
037     */
038    public class HybsSystemException extends RuntimeException {
039            private static final long serialVersionUID = 400020050131L ;
040    
041            /** シス?依存?改行記号をセ?します?  */
042    //      private static final String CR = System.getProperty("line.separator");
043    
044            /**
045             *  詳細メ?ージを指定しな? HybsSystemException を構築します?
046             *
047             */
048            public HybsSystemException() {
049                    // 4.3.4.4 (2009/01/01)
050    //              super();
051            }
052    
053            /**
054             *  ?された詳細メ?ージを持つ HybsSystemException を構築します?
055             *
056             * @param       str     詳細メ?ージ
057             */
058            public HybsSystemException( final String str ) {
059                    super( str );
060            }
061    
062            /**
063             *  ?された詳細メ?ージを持つ HybsSystemException を構築します?
064             *
065             * @param       th      例外Throwableオブジェク?
066             */
067            public HybsSystemException( final Throwable th ) {
068                    super( th );
069            }
070    
071            /**
072             *  ?されたオブジェクトを受け取る HybsSystemException を構築します?
073             *
074             * @og.rev 3.5.5.4 (2004/04/15) 引数を?RuntimeException(String , Throwable )にあわせます?
075             *
076             * @param       str     詳細メ?ージ
077             * @param       th      例外Throwableオブジェク?
078             * @see         java.lang.RuntimeException#RuntimeException(String,Throwable)
079             */
080            public HybsSystemException( final String str,final Throwable th ) {
081                    super( str,th );
082            }
083    
084            /**
085             * こ? Throwable オブジェクト?詳細メ?ージ??を返します?
086             * こ?クラスは、発生?の Throwable の StackTrace を?例外チェーン機?
087             * を利用して取得して?す?
088             * また?"org.opengion." を含?タ?トレースのみ、メ?ージとして追?ます?
089             *
090             * @og.rev 4.0.0.0 (2005/01/31) 例外チェーンを遡ってメ?ージを?力します?
091             *
092             * @param  thIn Throwableオブジェク?
093             *
094             * @return  Throwableの詳細メ?ージ
095             */
096    //      public static String getLongMessage( final Throwable thIn ) {
097    //              StringBuilder buf   = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
098    //              StringBuilder trace = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
099    //
100    //              buf.append( CR );
101    //              buf.append( "Version :" ).append( BuildNumber.ENGINE_INFO ).append( CR );
102    //
103    //              Throwable th = thIn ;
104    //              while( th != null ) {
105    //                      trace = getStackData( trace,th );
106    //                      if( th instanceof HybsSystemException ) {
107    //                              buf.append( th.getMessage() );
108    //                      }
109    //                      else {
110    //                              String msg = th.getMessage();
111    //                              if( msg != null && buf.indexOf( msg ) < 0 ) {
112    //                                      buf.append( msg );
113    //                              }
114    //                      }
115    //                      buf.append( CR );
116    //                      th = th.getCause();
117    //              }
118    //
119    //              buf.append( trace.toString() );
120    //              return buf.toString();
121    //      }
122    
123            /**
124             * "org.opengion." を含?StackTraceElement のメ?ージ??を返します?
125             *
126             * @og.rev 4.0.0.0 (2005/01/31) 新規追?
127             *
128             * @param  buf StringBuilder 以前?エラーメ?ージ
129             * @param  th  Throwable スタ?トレースを取り?すThrowableオブジェク?
130             *
131             * @return  "org.opengion." を含?StackTraceElement のメ?ージ
132             */
133    //      private static StringBuilder getStackData( final StringBuilder buf,final Throwable th ) {
134    //              if( th != null ) {
135    //                      int cnt = 0;
136    //                      StackTraceElement[] trace = th.getStackTrace();
137    //                      for( int i=0; i<trace.length; i++ ) {
138    //                              String msg = trace[i].toString();
139    //                              if( buf.indexOf( msg ) < 0 ) {
140    //                                      if( msg != null && msg.indexOf( "org.opengion." ) >= 0 ) {
141    //                                              buf.append( "\tat " ).append( msg ).append( CR );
142    //                                      }
143    //                                      else if( cnt++ < 5 ) {
144    //                                              buf.append( "\tat " ).append( msg ).append( CR );
145    //                                      }
146    //                                      else if( cnt++ == 5 ) {
147    //                                              buf.append( "\t   ......" ).append( CR );
148    //                                      }
149    //                              }
150    //                      }
151    //                      buf.append( "\t   ... more ..." ).append( CR );
152    //              }
153    //              return buf;
154    //      }
155    }