diff --git a/ForgeWiki/forgewiki/command/wiki2markdown/extractors.py b/ForgeWiki/forgewiki/command/wiki2markdown/extractors.py
index 4753673..ad8dfa1 100644
--- a/ForgeWiki/forgewiki/command/wiki2markdown/extractors.py
+++ b/ForgeWiki/forgewiki/command/wiki2markdown/extractors.py
@@ -3,6 +3,7 @@
 import shutil
 import json
 import hashlib
+from MySQLdb import DatabaseError
 
 from allura.command import base as allura_base
 
@@ -41,7 +42,11 @@
 
     def connection(self):
         if not self._connection:
-            self._connection = MySQLdb.connect(**self.db_options)
+            try:
+                self._connection = MySQLdb.connect(**self.db_options)
+            except DatabaseError, e:
+                allura_base.log.error("Can't connect to database: %s" % str(e))
+                exit(2)
         return self._connection
 
     def _save(self, content, *paths):
diff --git a/ForgeWiki/forgewiki/command/wiki2markdown/loaders.py b/ForgeWiki/forgewiki/command/wiki2markdown/loaders.py
index 87e0031..e149c71 100644
--- a/ForgeWiki/forgewiki/command/wiki2markdown/loaders.py
+++ b/ForgeWiki/forgewiki/command/wiki2markdown/loaders.py
@@ -61,8 +61,16 @@
         pages.sort()  # ensure that history in right order
         for page in pages:
             fn = os.path.join(page_dir, page)
-            with open(fn, 'r') as pages_file:
-                page_data = json.load(pages_file)
+            try:
+                with open(fn, 'r') as pages_file:
+                    page_data = json.load(pages_file)
+            except IOError, e:
+                allura_base.log.error("Can't open file: %s" % str(e))
+                exit(2)
+            except ValueError, e:
+                allura_base.log.error("Can't load data from file %s: %s"
+                                      % (fn, str(e)))
+                exit(2)
             yield page_data
 
     def _talk(self, page_dir):
@@ -70,8 +78,16 @@
         filename = os.path.join(page_dir, 'discussion.json')
         if not os.path.isfile(filename):
             return
-        with open(filename, 'r') as talk_file:
-            talk_data = json.load(talk_file)
+        try:
+            with open(filename, 'r') as talk_file:
+                talk_data = json.load(talk_file)
+        except IOError, e:
+            allura_base.log.error("Can't open file: %s" % str(e))
+            exit(2)
+        except ValueError, e:
+            allura_base.log.error("Can't load data from file %s: %s"
+                                  % (filename, str(e)))
+            exit(2)
         return talk_data
 
     def _attachments(self, page_dir):
@@ -142,7 +158,11 @@
         page = WM.Page.query.get(app_config_id=self.wiki.config._id,
                                  title=page_title)
         for filename, path in self._attachments(page_dir):
-            with open(path) as fp:
-                page.attach(filename, fp,
-                            content_type=utils.guess_mime_type(filename))
+            try:
+                with open(path) as fp:
+                    page.attach(filename, fp,
+                                content_type=utils.guess_mime_type(filename))
+            except IOError, e:
+                allura_base.log.error("Can't open file: %s" % str(e))
+                exit(2)
         allura_base.log.info('Loaded attachments for page %s.' % page_title)
diff --git a/ForgeWiki/forgewiki/tests/test_converters.py b/ForgeWiki/forgewiki/tests/test_converters.py
index 8787898..72a0227 100644
--- a/ForgeWiki/forgewiki/tests/test_converters.py
+++ b/ForgeWiki/forgewiki/tests/test_converters.py
@@ -23,13 +23,14 @@
     mediawiki_text = """
 '''bold''' ''italics''
 == Getting started ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration]
 * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
     """
     mediawiki_output = converters.mediawiki2markdown(mediawiki_text)
     assert "**bold** _italics_" in mediawiki_output
     assert "## Getting started" in mediawiki_output
-    assert "* [MediaWiki FAQ](http://www.mediawiki.org/wiki/Manual:FAQ)" in mediawiki_output
+    assert ("* [MediaWiki FAQ](http://www.mediawiki.org/wiki/Manual:FAQ)"
+            in mediawiki_output)
 
 
 def test_mediawiki_internal_links2markdown():
