1.异常 还是在上节的例子中继续完善,我们在函数中假装抛出异常:
suspend funprintSunny(): String {delay(3000)throw AssertionError("ERR!!!")// 下面这行永远执行不到,可以删掉return "Sunny"}
此次运行,就会使程序崩溃。 kotlin也有自己的try{}catch{}。 funmain(){var time = measureTimeMillis{runBlocking {println("Weather forecast")try {println(printSunnySum())}catch(e: AssertionError){println("Caught exception in runBlocking(): $e")println("have err!")}println("Weather forecast2")}}println("Execution time: ${time / 1000.0} seconds")}通过这样的方式,则没有程序崩溃。
所有源码:
import kotlin.system.*import kotlinx.coroutines.*funmain(){var time = measureTimeMillis{runBlocking {println("Weather forecast")try {println(printSunnySum())}catch(e: AssertionError){println("Caught exception in runBlocking(): $e")println("have err!")}println("Weather forecast2")}}println("Execution time: ${time / 1000.0} seconds")}suspend funprintSunnySum()=coroutineScope{val ps1= async{printSunny()}val ps2 = async{printSunny2()}" ${ps2.await()}"}suspend funprintSunny(): String {delay(3000)throw AssertionError("ERR!!!")// 下面这行永远执行不到,可以删掉return "Sunny"}suspend funprintSunny2(): String {delay(3000)return "Sunny2"}

夜雨聆风