code: def test_exceptions(self):
      good1 = turicreate.SArray([{"a": 5, "b": 7}])
      good2 = turicreate.SFrame({"bow": good1})
      good3 = turicreate.SArray([{}])
      bad1 = turicreate.SFrame({"x": [0, 1, 2, 3]})
      bad2 = turicreate.SFrame({"x": [{"0": 3}], "y": [{"3": 5}]})
      bad3 = turicreate.SArray([{"a": 5, "b": 3}, None, {"a": 10}])
      bad4 = turicreate.SArray([{"a": 5, "b": None}, {"a": 3}])
  
      for d in [good1, good2, good3]:
          m = topic_model.create(d)
          self.assertTrue(m is not None)
  
      # Test that create() throws on bad input
      with self.assertRaises(Exception):
          m = topic_model.create(bad1)
      with self.assertRaises(Exception):
          m = topic_model.create(bad2)
      with self.assertRaises(ToolkitError):
          m = topic_model.create(bad3)
      with self.assertRaises(ToolkitError):
          m = topic_model.create(bad4)
  
      m = self.models[0]
      with self.assertRaises(Exception):
          pr = m.predict(bad1)
      with self.assertRaises(Exception):
          pr = m.predict(bad2)
      with self.assertRaises(Exception):
          pr = m.predict(bad3)
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import os
  import tempfile
  import shutil
  import unittest
  import turicreate
  from turicreate.toolkits._main import ToolkitError
  from turicreate.toolkits.topic_model import topic_model
  from turicreate.toolkits.text_analytics import parse_sparse
  from turicreate.toolkits.text_analytics import parse_docword
  from turicreate.toolkits.topic_model import perplexity
  from .None import util
  import time
  import random
  import numpy
  import itertools
label_desc: Use image node_id 12 for calling the BasicTest obj's underlying member method code with example usage: obj.test_exceptions() without return types