diff --git a/linux-ramdump-parser-v2/print_out.py b/linux-ramdump-parser-v2/print_out.py
index 51370a7aca61a3c6ba55255323e48f9d15de74e2..9a2698ef221542411d6836e1f0982ca39d300e83 100644
--- a/linux-ramdump-parser-v2/print_out.py
+++ b/linux-ramdump-parser-v2/print_out.py
@@ -9,6 +9,7 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 import sys
+import traceback
 from contextlib import contextmanager
 
 out_file = None
@@ -30,6 +31,11 @@ def print_out_str(string):
     else:
         out_file.write((string + '\n').encode('ascii', 'ignore'))
 
+def print_out_exception():
+    if out_file is None:
+        traceback.print_exc(file=sys.stdout)
+    else:
+        traceback.print_exc(file=out_file)
 
 @contextmanager
 def print_out_section(header):
diff --git a/linux-ramdump-parser-v2/ramparse.py b/linux-ramdump-parser-v2/ramparse.py
index 7caf6094ae2c918d696fff93fa1891f64eed6935..2a53efdb1b86665c7bb75b904858967e79196200 100755
--- a/linux-ramdump-parser-v2/ramparse.py
+++ b/linux-ramdump-parser-v2/ramparse.py
@@ -25,7 +25,7 @@ from optparse import OptionParser
 
 import parser_util
 from ramdump import RamDump
-from print_out import print_out_str, set_outfile, print_out_section
+from print_out import print_out_str, set_outfile, print_out_section, print_out_exception
 
 # Please update version when something is changed!'
 VERSION = '2.0'
@@ -306,7 +306,11 @@ if __name__ == '__main__':
         # p.cls.__name__ attribute.
         if getattr(options, p.cls.__name__) or (options.everything and not p.optional):
             with print_out_section(p.cls.__name__):
-                p.cls(dump).parse()
+                try:
+                    p.cls(dump).parse()
+                except:
+                    print_out_str('!!! Exception while running {0}'.format(p.cls.__name__))
+                    print_out_exception()
 
     if options.t32launcher or options.everything:
         dump.create_t32_launcher()