diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 105eb04..d1b56c2 100755
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -1,7 +1,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.google.android.inputmethod.latin"
         android:versionCode="9"
-        android:versionName="0.15">
+        android:versionName="0.16">
 
     <uses-sdk android:minSdkVersion="8"></uses-sdk>
 
diff --git a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
index ef3fb8e..a8be2fd 100644
--- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
@@ -392,7 +392,7 @@
             try {
                 mInputView = (LatinKeyboardView) mInputMethodService.getLayoutInflater().inflate(
                         LAYOUTS[newLayout], null);
-            } catch (RuntimeException e) {
+            } catch (OutOfMemoryError e) {
                 LatinImeLogger.logOnException(mLayoutId + "," + newLayout, e);
             }
             mInputView.setExtentionLayoutResId(LAYOUTS[newLayout]);
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 5209745..6d62096 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -291,7 +291,11 @@
         if (inputLanguage == null) {
             inputLanguage = conf.locale.toString();
         }
-        initSuggest(inputLanguage);
+        try {
+            initSuggest(inputLanguage);
+        } catch (OutOfMemoryError e) {
+            LatinImeLogger.logOnException(inputLanguage, e);
+        }
         mOrientation = conf.orientation;
         initSuggestPuncList();
 
diff --git a/java/src/com/android/inputmethod/latin/LatinImeLogger.java b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
index 83a791c..5a8b61d 100644
--- a/java/src/com/android/inputmethod/latin/LatinImeLogger.java
+++ b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
@@ -550,7 +550,7 @@
         }
     }
 
-    public static void logOnException(String metaData, RuntimeException e) {
+    public static void logOnException(String metaData, Throwable e) {
         if (sLogEnabled) {
             ByteArrayOutputStream baos = new ByteArrayOutputStream();
             PrintStream ps = new PrintStream(baos);
@@ -566,7 +566,11 @@
                 sLatinImeLogger.commitInternalAndStopSelf();
             } else {
                 sLatinImeLogger.commitInternal();
-                throw e;
+                if (e instanceof RuntimeException) {
+                    throw (RuntimeException) e;
+                } else if (e instanceof Error) {
+                    throw (Error) e;
+                }
             }
         }
     }
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
index 46f04b8..014d773 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
@@ -474,7 +474,7 @@
     public void draw(Canvas c) {
         try {
             super.draw(c);
-        } catch (RuntimeException e) {
+        } catch (OutOfMemoryError e) {
             LatinImeLogger.logOnException("draw in LatinKeybaordView", e);
         }
         if (DEBUG_AUTO_PLAY) {
