diff --git a/src/class_linker.cc b/src/class_linker.cc
index 2aa9d7d..1e0cdb1 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -1290,23 +1290,17 @@
   }
 
   CHECK_EQ(klass->GetStatus(), Class::kStatusResolved);
-
   klass->SetStatus(Class::kStatusVerifying);
-  if (!DexVerifier::VerifyClass(klass)) {
-    LOG(ERROR) << "Verification failed on class "
-               << klass->GetDescriptor()->ToModifiedUtf8();
-    Object* exception = Thread::Current()->GetException();
-    // CHECK(exception != NULL) << PrettyClass(klass);
-    if (exception == NULL) {
-      UNIMPLEMENTED(ERROR) << "null verification exception for " << PrettyClass(klass);
-    } else {
-      klass->SetVerifyErrorClass(exception->GetClass());
-    }
-    klass->SetStatus(Class::kStatusError);
-    return;
-  }
 
-  klass->SetStatus(Class::kStatusVerified);
+  if (DexVerifier::VerifyClass(klass)) {
+    klass->SetStatus(Class::kStatusVerified);
+  } else {
+    LOG(ERROR) << "Verification failed on class " << PrettyClass(klass);
+    CHECK(!Thread::Current()->IsExceptionPending()) << PrettyTypeOf(Thread::Current()->GetException());
+
+    CHECK_EQ(klass->GetStatus(), Class::kStatusVerifying);
+    klass->SetStatus(Class::kStatusResolved);
+  }
 }
 
 bool ClassLinker::InitializeClass(Class* klass, bool can_run_clinit) {
diff --git a/src/compiler.cc b/src/compiler.cc
index d29e8ca..34263da 100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -183,15 +183,8 @@
     }
     CHECK(klass->IsResolved()) << PrettyClass(klass);
     class_linker->VerifyClass(klass);
-    CHECK(klass->IsVerified() || klass->IsErroneous()) << PrettyClass(klass);
-    //CHECK(!Thread::Current()->IsExceptionPending());
-    if (klass->IsErroneous()) {
-      Thread* self = Thread::Current();
-      if (self->IsExceptionPending()) {
-        UNIMPLEMENTED(WARNING) << "Verifier failed to cleanup exceptions internally";
-        self->ClearException();
-      }
-    }
+    CHECK(klass->IsVerified() || klass->IsResolved()) << PrettyClass(klass);
+    CHECK(!Thread::Current()->IsExceptionPending()) << PrettyTypeOf(Thread::Current()->GetException());
   }
   dex_file.ChangePermissions(PROT_READ);
 }
