OSDN Git Service

例外の具体化
authorOlyutorskii <olyutorskii@users.osdn.me>
Fri, 29 Apr 2011 11:49:39 +0000 (20:49 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Fri, 29 Apr 2011 11:49:39 +0000 (20:49 +0900)
src/main/java/jp/sourceforge/jindolf/archiver/JinArchiver.java

index fe5b489..a62dc52 100644 (file)
@@ -21,9 +21,11 @@ import java.util.List;
 import java.util.Properties;\r
 import javax.xml.parsers.DocumentBuilder;\r
 import javax.xml.parsers.DocumentBuilderFactory;\r
+import javax.xml.parsers.ParserConfigurationException;\r
 import jp.sourceforge.jindolf.corelib.LandDef;\r
 import jp.sourceforge.jindolf.parser.DecodeException;\r
 import jp.sourceforge.jindolf.parser.HtmlParseException;\r
+import org.xml.sax.SAXException;\r
 \r
 /**\r
  * メインエントリ。\r
@@ -61,9 +63,11 @@ public final class JinArchiver{
         try{\r
             DocumentBuilder builder = factory.newDocumentBuilder();\r
             LANDDEF_LIST = LandDef.buildLandDefList(builder);\r
-        }catch(RuntimeException e){\r
-            throw e;\r
-        }catch(Exception e){\r
+        }catch(ParserConfigurationException e){\r
+            throw new ExceptionInInitializerError(e);\r
+        }catch(IOException e){\r
+            throw new ExceptionInInitializerError(e);\r
+        }catch(SAXException e){\r
             throw new ExceptionInInitializerError(e);\r
         }\r
     }\r
@@ -290,19 +294,29 @@ public final class JinArchiver{
 \r
         try{\r
             dump(writer, landDef, vid);\r
-        }catch(RuntimeException e){\r
-            throw e;\r
-        }catch(Exception e){\r
-            e.printStackTrace(System.err);\r
-            errprintln("処理を続行できません。");\r
-            exit(1);\r
-            return;\r
+        }catch(IOException e){\r
+            abortWithException(e);\r
+        }catch(DecodeException e){\r
+            abortWithException(e);\r
+        }catch(HtmlParseException e){\r
+            abortWithException(e);\r
         }\r
 \r
         return;\r
     }\r
 \r
     /**\r
+     * 例外によるアプリ終了。\r
+     * @param e 例外\r
+     */\r
+    private static void abortWithException(Exception e){\r
+        e.printStackTrace(System.err);\r
+        errprintln("処理を続行できません。");\r
+        exit(1);\r
+        return;\r
+    }\r
+\r
+    /**\r
      * 主処理。人狼サーバからXHTMLを読み込み。XMLで出力。\r
      * @param writer 出力先\r
      * @param landDef 国情報\r