跟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