原文: https://beginnersbook.com/2019/03/kotlin-try-catch/

在上一个教程中,我们学习了什么是异常处理。在本指南中,我们将看到try catch块的各种示例。我们还将看到如何使用try作为表达式。

try catch块的语法

  1. try {
  2. //code where an exception can occur
  3. }
  4. catch (e: SomeException) {
  5. // handle the exception
  6. }
  7. finally {
  8. // optional block but executes always
  9. }

try块可以与多个catch块相关联,但是只能存在一个finally块。

Kotlin try catch块示例

在这个例子中,我们放置了可能导致try块内异常的代码。一旦异常发生在try块内,它就会查找处理发生的异常的相应catch块。由于在代码中发生了ArithmeticException并且在catch块中处理了相同的异常,因此执行catch块中的代码。

异常处理的主要优点是程序不会突然终止。在以下示例中,最后一个println语句println("Out of try catch block")catch块之后执行。如果我们没有进行异常处理,则不会执行此语句,因为程序将在行var num = 100/0上终止

  1. fun main(args: Array<String>) {
  2. try{
  3. var num = 100/0
  4. println(num)
  5. }
  6. catch(e: ArithmeticException){
  7. println("Arithmetic Error in the code")
  8. }
  9. println("Out of try catch block")
  10. }

输出:

Kotlin `try-catch` - 图1

Kotlin 没有catch块的try

try块可以没有catch块,但在这种情况下必须存在finally块。 总之,你可以说至少应该有一个catchfinallyfinally块是可选的,但是当没有catch块时,必须有一个finally块。

  1. fun main(args: Array<String>) {
  2. try{
  3. var num = 10/5
  4. println(num)
  5. }
  6. finally{
  7. println("Finally block")
  8. }
  9. println("Out of try catch block")
  10. }

输出:

  1. 2
  2. Finally block
  3. Out of try catch block