title: Can't catch exception throwing after Kotlin coroutine is cancelled
body: <p>Using <a href="https://github.com/Kotlin/kotlinx.coroutines/" rel="nofollow noreferrer">kotlinx.coroutines</a> lib I can't catch an exception if it was thrown after coroutine is canceled. This leads to app crash. </p>
  
  <pre><code>fun foo() {
    val job = launch(UI) {
       try {
          Log.d("TAG", "Start coroutine")
          run(CommonPool) {
             Log.d("TAG", "Start bg task")
             // Intentionally make bg task running for a long time
             SystemClock.sleep(2000)
             Log.d("TAG", "Throw bg task exception")
             throw RuntimeException("Bg task exception")
          }
       } catch (e: Exception) {
          Log.e("TAG", "Handle coroutine exception", e)
       }
    }
  
    launch(UI) {
       delay(1000)
       Log.d("TAG", "Cancel job = ${job.cancel()}")
    }
  </code></pre>
  
  <p>}</p>
  
  <p>Running this functions on Android produces the following log output</p>
  
  <pre><code>07-26 15:09:10.038 31518-31518/co.foo.bar D/MainActivity: Start coroutine
  07-26 15:09:10.044 31518-31547/co.foo.bar D/MainActivity: Start bg task
  07-26 15:09:11.046 31518-31518/co.foo.bar D/MainActivity: Cancel job = true
  07-26 15:09:11.047 31518-31518/co.foo.bar E/MainActivity: Handled coroutine exception
                             java.util.concurrent.CancellationException: Job was cancelled
                             at kotlinx.coroutines.experimental.JobSupport$CompletedExceptionally.getException(Job.kt:921)
                             at kotlinx.coroutines.experimental.RunCompletion.afterCompletion(Builders.kt:198)
                             ...
                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
  07-26 15:09:12.046 31518-31547/co.foo.bar D/MainActivity: Throwing bg task exception
  
  --------- beginning of crash
  07-26 15:09:12.046 31518-31547/co.foo.bar E/AndroidRuntime: FATAL EXCEPTION: ForkJoinPool.commonPool-worker-1
  Process: co.foo.bar, PID: 31518
                             java.lang.RuntimeException: Bg task exception
                             at co.foo.barsample.MainActivity$onCreate$1$job$1$1.doResume(MainActivity.kt:36)
                             at kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resume(CoroutineImpl.kt:54)
                             at kotlinx.coroutines.experimental.DispatchTask.run(CoroutineDispatcher.kt:120)
                             at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1383)
                             at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:256)
                             at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1123)
                             at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1961)
                             at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1909)
                             at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:128)
  07-26 15:09:12.050 1705-2190/system_process W/ActivityManager:   Force finishing activity co.foo.bar/co.foo.barsample.MainActivity
  </code></pre>
  
  <p>Seems to be calling <code>cancel()</code> throws <code>CancellationException</code> which is caught successfully. But the subsequent <code>RuntimeException</code> is not caught. I suppose the following exceptions after the job is canceled should be ignored by the lib? Or how I can cancel job silently without throwing a <code>CancellationException</code> exception?</p>