diff mde/lookup/Options.d @ 81:d8fccaa45d5f

Moved file IO code from mde/mergetag to mde/file[/mergetag] and changed how some errors are caught.
author Diggory Hardy <diggory.hardy@gmail.com>
date Fri, 29 Aug 2008 11:59:43 +0100
parents ea58f277f487
children ac1e3fd07275
line wrap: on
line diff
--- a/mde/lookup/Options.d	Thu Aug 07 11:25:27 2008 +0100
+++ b/mde/lookup/Options.d	Fri Aug 29 11:59:43 2008 +0100
@@ -24,11 +24,10 @@
 import mde.setup.paths;
 import mde.exception;
 
-import mde.mergetag.Reader;
-import mde.mergetag.Writer;
-import mde.mergetag.DataSet;
-import mde.mergetag.exception;
-import mde.mergetag.serialize;
+import mde.file.mergetag.Reader;
+import mde.file.mergetag.Writer;
+import mde.file.mergetag.DataSet;
+import mde.file.serialize;
 
 import tango.core.Exception : ArrayBoundsException;
 import tango.util.log.Log : Log, Logger;
@@ -134,10 +133,6 @@
     	*/
         private const fileName = "options";
         void load () {
-        // Check it exists (if not it should still be created on exit).
-        // Don't bother checking it's not a folder, because it could still be a block or something.
-            if (!confDir.exists (fileName)) return;
-        
             try {
                 IReader reader;
                 reader = confDir.makeMTReader (fileName, PRIORITY.LOW_HIGH);
@@ -148,10 +143,11 @@
                     else return null;
                 };
                 reader.read;
-            } catch (MTException e) {
-                logger.fatal ("Loading options aborted:");
-                logger.fatal (e.msg);
-                throw new optionsLoadException ("Mergetag exception (see above message)");
+            } catch (NoFileException e) {
+                // Just return. Options file will be created on exit.
+            } catch (Exception e) {
+                logger.warn ("Loading options failed: "~e.msg);
+                logger.warn ("If warning persists, delete the offending file.");        // FIXME - delete the bad file somehow
             }
         }
         void save () {
@@ -170,19 +166,17 @@
                 reader.read;
             } catch (NoFileException) {
                 // No user file exists; not an error.
-            } catch (MTException e) {
+            } catch (Exception e) {
             	// Log a message and continue, overwriting the file:
-                logger.error ("Loading options aborted:");
-                logger.error (e.msg);
+                logger.error ("Loading options aborted: " ~ e.msg);
             }
         
             try {
                 IWriter writer;
                 writer = confDir.makeMTWriter (fileName, ds);
                 writer.write();
-            } catch (MTException e) {
-                logger.error ("Saving options aborted! Reason:");
-                logger.error (e.msg);
+            } catch (Exception e) {
+                logger.error ("Saving options aborted: "~e.msg);
             }
         }