title: Python how to bubble up exception with full stack information
body: <p>See the following code</p>
  
  <pre><code>def ex_string(ex):
      return "Error:{} Traceback:{}".format(ex, traceback.format_exc())
  
  def map_values(listing):
      ...
      obj = listing['value']
      ...
  
  def process_listing(listing):
      try:
          listing = map_values(listing)
      except Exception as ex:
          do_some_handling(listing)
          print ex_string(ex)  # this stack shows actual line inside map_values
          raise ex
  
  def start():
      for listing in listings:
          try:
              process_listing(listing)
              save_listing(listing)
          except Exception as ex:
              error = ex_string(ex)  #this stack shows map_values function only
              log_error(error)
  </code></pre>
  
  <p>As above, when <code>listing</code> does not contain <code>'value'</code> element, I don't know which line is causing issue, all I know from log is somewhere inside <code>map_values</code> function, how do I get the full stack trace from where the exception was first raised? In this case <code>obj = listing['value']</code></p>