diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 105eb042a89fb46e40ee976b23ee3bfcd4964cb7..d1b56c26c9276741f481e9ad0eb1ae8122336db8 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 ef3fb8e1e6c722734925e864f2cfda225e329d17..a8be2fd44c5220c482b857cea3e74685ac18a98a 100644
--- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
@@ -392,7 +392,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
             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 5209745806444f39b3ad8a776083f1e9add49e27..6d620968adb81863364e5f39e0d61bb132c7c2f5 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -291,7 +291,11 @@ public class LatinIME extends InputMethodService
         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 83a791c130a25aab3443805f0c1430451d0cf87b..5a8b61dbcd219d779eac24ebfc2fb50ef612a69a 100644
--- a/java/src/com/android/inputmethod/latin/LatinImeLogger.java
+++ b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
@@ -550,7 +550,7 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang
         }
     }
 
-    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 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang
                 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 46f04b8a2c5c149760cab9968f358451edf723d0..014d773abe359b8ece5fdbd337e6d5c5e8fc553b 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
@@ -474,7 +474,7 @@ public class LatinKeyboardView extends KeyboardView {
     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) {