title: 'TypeError: catching classes that do not inherit from BaseException is not allowed' when trying to mock an exception
body: <p>I am trying to test a block of code which interacts with the Amazon Forecast service, which looks very similar to the example provided at <a href="https://github.com/aws-samples/amazon-forecast-samples/blob/master/ml_ops/visualization_blog/lambdas/createdataset/dataset.py" rel="nofollow noreferrer">https://github.com/aws-samples/amazon-forecast-samples/blob/master/ml_ops/visualization_blog/lambdas/createdataset/dataset.py</a>.</p>
  <p>More specifically, I am trying to test that I am handling the exception properly. Assuming 'forecast' is the Amazon Forecast boto3 client, the code is structured as follows:</p>
  <pre><code>def example_function(dataset):
      try:
          forecast.describe_dataset(dataset)
          #do some stuff
      except forecast.exceptions.ResourceNotFoundException:
          #do other stuff
  </code></pre>
  <p>I have a test case which looks like this:</p>
  <pre><code>from moto.forecast.exceptions import ResourceNotFoundException
  
  @patch('forecast client')
  def test(self, mock_forecast):
      mock_forecast.describe_dataset.side_effect = ResourceNotFoundException
      example_function(dataset)
  </code></pre>
  <p>This produces the 'TypeError: catching classes that do not inherit from BaseException is not allowed' which is confusing me, as moto.forecast.exceptions.ResourceNotFoundException inherits the moto class 'AWSError', which in turn inherits 'Exception'.</p>
  <p>I am fairly at a loss as to how to test the 'except' block of my code without actually interacting with the forecast service if I am not able to set a side_effect as an Exception. Any ideas would be greatly appreciated!</p>