kotlin 异常处理

跟java类似try {} catch(Exception e) {}finally{},写程序不要吃掉异常,要提示出来,吃掉异常的人是最无耻的.

尽管kotlin处理空指针异常很好,但是还有其他异常啊,都得需要处理好, 异常出现就程序崩溃了,老板会找你谈话的.

例如:

package com.testTryCatch

/**
 * Created by jingwen on 19/4/14.
 */

fun main(args: Array<String>) {
    var list:Array<String> = arrayOf("jingwen","zhulina","chengcheng")
    println(list[4])
}

执行结果:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
	at com.testTryCatch.TestKt.main(test.kt:10)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

Process finished with exit code 1

上面代码必须修改,不然老板会收拾你的哦,最起码不能让程序崩溃,提示程序员赶紧把自己挖的深坑填上

package com.testTryCatch

/**
 * Created by jingwen on 19/4/14.
 */

fun main(args: Array<String>) {
    println("app start")
    try {
        var list:Array<String> = arrayOf("jingwen","zhulina","chengcheng")
        println(list[4])
    } catch(e: Exception) {
        e.printStackTrace()
    } finally {
        println("尽管有异常出现了,根本不耽误我finally 露脸,垃圾还得我来处理")
    }

    println("app end")
}
app start
尽管有异常出现了,根本不耽误我finally 露脸,垃圾还得我来处理
app end
java.lang.ArrayIndexOutOfBoundsException: 4
	at com.testTryCatch.TestKt.main(test.kt:11)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

Process finished with exit code 0

try catch还是个表达式,可以给变量赋值的

package com.testTryCatch

/**
 * Created by jingwen on 19/4/14.
 */

fun main(args: Array<String>) {
    println("app start")
   var result= try {
        var list:Array<String> = arrayOf("jingwen","zhulina","chengcheng")
        println(list[4])
       0
    } catch(e: Exception) {
        e.printStackTrace()
       1
    } finally {
        println("尽管有异常出现了,根本不耽误我finally 露脸,垃圾还得我来处理")
    }

    println("是否异常:[1有异常,0无异常] app result:$result")
    println("app end")
}

执行结果:

app start
java.lang.ArrayIndexOutOfBoundsException: 4
	at com.testTryCatch.TestKt.main(test.kt:11)
尽管有异常出现了,根本不耽误我finally 露脸,垃圾还得我来处理
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
是否异常:[1有异常,0无异常] app result:1
app end
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/jingwen3699/article/details/89300813
今日推荐