title: what is the purpose of using the `from exc` in `raise RuntimeError('Failed to open database') from exc`?
body: <p><a href="https://docs.python.org/3/tutorial/errors.html#exception-chaining" rel="nofollow noreferrer">https://docs.python.org/3/tutorial/errors.html#exception-chaining</a></p>
  <pre><code>&gt;&gt;&gt;
  &gt;&gt;&gt; def func():
  ...     raise IOError
  ...
  &gt;&gt;&gt; try:
  ...     func()
  ... except IOError as exc:
  ...     raise RuntimeError('Failed to open database') from exc
  ...
  Traceback (most recent call last):
    File &quot;&lt;stdin&gt;&quot;, line 2, in &lt;module&gt;
    File &quot;&lt;stdin&gt;&quot;, line 2, in func
  OSError
  
  The above exception was the direct cause of the following exception:
  
  Traceback (most recent call last):
    File &quot;&lt;stdin&gt;&quot;, line 4, in &lt;module&gt;
  RuntimeError: Failed to open database
  </code></pre>
  <p>Exception chaining happens automatically when an exception is raised inside an except or finally section. So what is the purpose of using the <code>from exc</code> in <code>raise RuntimeError('Failed to open database') from exc</code>? Isn't it implicit?</p>