乐于分享
好东西不私藏

保姆级学习开发安卓手机软件(二十七)--简单的异常处理

保姆级学习开发安卓手机软件(二十七)--简单的异常处理
  • 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"}
        不是很建议大家复制,自己打字好一些,而且复制过去可能会出错,因为有可能会变成中文全角空格,Kotlin 编译器无法识别,直接报一堆语法错误。
        那最后的结果:
        实际软件开发中,我们要尽量将异常处理,避免软件崩溃。