📜  Dart编程-异常(1)

📅  最后修改于: 2023-12-03 15:14:36.918000             🧑  作者: Mango

Dart编程-异常

简介

异常是指当代码出现错误时,程序会抛出一个异常,中断现有流程,并逐级向上查找能够处理这个异常的代码。Dart中使用关键字throwtry-catch语句处理异常。

抛出异常

在代码中,如果出现了错误,可以使用throw关键字抛出一个异常。例如:

void main() {
  int i = 6;
  
  if(i > 5){
    throw Exception('i的值不能大于5');
  }
}

以上代码中,如果变量i的值大于5,就会抛出一个异常。

捕获异常

为了处理异常,可以使用try-catch语句捕获异常并处理。例如:

void main() {
  int i = 6;
  
  try{
    if(i > 5){
      throw Exception('i的值不能大于5');
    }
  } catch(e){
    print(e);
  }
}

以上代码中,如果变量i的值大于5,就会抛出一个异常。然后,catch语句会捕获这个异常,并使用print函数将异常信息输出到控制台。

多个catch

try-catch语句还支持多个catch块,用于处理不同类型的异常。例如:

void main() {
  int i = 6;
  
  try{
    if(i > 5){
      throw Exception('i的值不能大于5');
    }
  } on IntegerDivisionByZeroException {
    print('发生了除以0的异常');
  } catch(e){
    print(e);
  }
}

以上代码中,如果变量i的值大于5,就会抛出一个异常。如果这个异常是IntegerDivisionByZeroException类型的,那么就会在第一个catch块中处理。如果不是,就会在第二个catch块中处理。

finally

try-catch语句还支持finally块,用于在异常处理完毕后执行一些清理工作,无论是否发生异常。例如:

void main() {
  int i = 6;
  
  try{
    if(i > 5){
      throw Exception('i的值不能大于5');
    }
  } on IntegerDivisionByZeroException {
    print('发生了除以0的异常');
  } catch(e){
    print(e);
  } finally{
    print('程序运行完毕');
  }
}

以上代码中,如果变量i的值大于5,就会抛出一个异常。如果这个异常是IntegerDivisionByZeroException类型的,那么就会在第一个catch块中处理。如果不是,就会在第二个catch块中处理。最后,finally块会在异常处理完毕后输出一条信息。