diff --git a/src/lint/linter/ArcanistXHPASTLinter.php b/src/lint/linter/ArcanistXHPASTLinter.php
--- a/src/lint/linter/ArcanistXHPASTLinter.php
+++ b/src/lint/linter/ArcanistXHPASTLinter.php
@@ -4144,9 +4144,13 @@
         continue;
       }
 
-      $throws = $method
-        ->getChildOfType(5, 'n_STATEMENT_LIST')
-        ->selectDescendantsOfType('n_THROW');
+      $statements = $method->getChildByIndex(5);
+
+      if ($statements->getTypeName() != 'n_STATEMENT_LIST') {
+        continue;
+      }
+
+      $throws = $statements->selectDescendantsOfType('n_THROW');
 
       foreach ($throws as $throw) {
         $this->raiseLintAtNode(
diff --git a/src/lint/linter/__tests__/xhpast/tostring-exception.lint-test b/src/lint/linter/__tests__/xhpast/tostring-exception.lint-test
--- a/src/lint/linter/__tests__/xhpast/tostring-exception.lint-test
+++ b/src/lint/linter/__tests__/xhpast/tostring-exception.lint-test
@@ -14,5 +14,13 @@
     return 'Success';
   }
 }
+
+interface SomeInterface {
+  public function __toString();
+}
+
+abstract class SomeAbstractClass {
+  abstract public function __toString();
+}
 ~~~~~~~~~~
 error:5:7