4 - Dart 的流程控制语句

260 阅读1分钟

流程控制语句

判断

  • if - else if - else 和所有的编程语言一样,但需要和 javascript 的开发者提醒一句,if 判断的一定要是 bool 类型,不能是 0,非0 这些数据

      var num = 1;
      if(num > 10 && num < 100){
    
      }
      esle if(num > 100 && num < 200){
    
      }
      else{
    
      }
    
  • switch - case
    和 if - else 不一样,switch 中会自己判断,因此不需要限制为 bool 类型
    如果两个 case 执行的内容一致,我们可以把两个 case 写在一起。

      const state = 'loading'; // loading,success,fail
      switch(state){
        // 两个执行内容一致
        case 'loading':
        case 'success':
          // do something
          break;
        case 'fail':
          // do something
          break;
        default:
      }
    

循环

  • for
  • while / do while
    这两个并没有特别需要说的和普通的编程语言一样,如果说真的有什么需要注意的,那就是 while 中需要是 bool 类型
  for(var i = 0 ;i < 100;i++){

  }

  var num1 = 0;
  while(num1 < 100){
    num1 = num1 + 10;
  }

  var num2 = 0;
  do{
    num2 = num2 + 10;
  }
  while(num2 < 100)

break / continue

和所有编程语言一样,break 打断循环,而 continue 则可以跳过循环。

异常

  • 抛出
    throw 在 Dart 中能抛出任何东西,但是为了开发安全,我们一般是使用内置的 ErrorException 来抛出。
    除了普通的 throw 之外,还能使用 rethrow 。当我们处理了异常之后,还能使用 rethrow 来让调用者看到异常的信息

    throw OutOfMemoryError();
    throw "123456";
    
    try{
    
    }
    catch(e){
      // do something
      rethrow()
    }
    
  • 捕获
    try - catch 是常见的抛出-捕获异常的操作,而 Dart 中还有 on 这么一个关键词来处理特定的异常。

    try {
      throw OutOfMemoryError();
    } on OutOfMemoryError {
      print("OutOfMemoryError");
      rethrow;
    } catch (e) {
      print(e);
    } finally {
      print('over');
    }