diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index f9dda6a4023a49787570ac7f5d1501240155e4f7..8a4862094b22576357ff25f275e64a000e4f0155 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -258,7 +258,6 @@ public class SubtypeSwitcher {
                 triggerVoiceIME();
             }
         } else {
-            Log.w(TAG, "Unknown subtype mode: " + newMode);
             if (VOICE_MODE.equals(oldMode) && mVoiceInputWrapper != null) {
                 // We need to reset the voice input to release the resources and to reset its status
                 // as it is not the current input mode.
@@ -271,8 +270,14 @@ public class SubtypeSwitcher {
                         packageName, 0).versionCode;
             } catch (NameNotFoundException e) {
             }
-            throw new RuntimeException("Unknown subtype mode: " + version + ", " + packageName
-                    + ", " + mVoiceInputWrapper);
+            Log.w(TAG, "Unknown subtype mode: " + newMode + "," + version + ", " + packageName
+                    + ", " + mVoiceInputWrapper + ". IME is already changed to other IME.");
+            if (newSubtype != null) {
+                Log.w(TAG, "Subtype mode:" + newSubtype.getMode());
+                Log.w(TAG, "Subtype locale:" + newSubtype.getLocale());
+                Log.w(TAG, "Subtype extra value:" + newSubtype.getExtraValue());
+                Log.w(TAG, "Subtype is auxiliary:" + newSubtype.isAuxiliary());
+            }
         }
     }