dart4flutter – 02 –控制流 和异常

控制流

If – else

if-else 和其他语言一样比较简单。

main(List<String> args) {
  var number = 57;
 
  if (number > 100) {
    print('Large Number');
  } else if (number < 100) {
    print('Small Number');
  } else {
    print('Number is 100');
  }
}

可以用三元运算符代替if-else

main(List<String> args) {
  int age = 60;
 
  String status = age < 50 ? "Still young" : "Old Man";
}

循环

和其他大多数语言一样,dart也支持各种的循环,而且语法一样。

For 循环

典型的for循环。

main(List<String> args) {
  for (int i = 0; i < 10; i++) {
    print('$i');
  }
}

While 循环

典型的while循环

main(List<String> args) {
  int i = 0;
  while(i < 10) {
    print('$i');
    i++;
  }
}

Do-while 循环

The classic for do while loop.
典型的do while循环。

main(List<String> args) {
  int i = 0;
  do {
    print('$i');
    i++;
  } while (i < 10);
}

Switch

main(List<String> args) {
  int age = 50;
 
  switch(age) {
    case 10:
      print('Too Young.');
      break;
    case 20:
    case 30:
      print('Still Young!');
      break;
    case 40:
      print('Getting old.');
      break;
    case 50:
      print('You are old!');
      break;
  }
}

异常处理

dart 使用经典的try-catch处理异常,使用关键字throw抛出一个异常。

抛出异常

首先,看看如何抛出异常

main(List<String> args) {
  divide(10, 0);
}
 
divide(int a, int b) {
  if (b == 0) {
    throw new IntegerDivisionByZeroException();
  }
  return a / b;
}

当b变量的值为0的时候,抛出一个内置的异常IntegerDivisionByZeroException。

你也可以在异常中携带一个字符串信息。

main(List<String> args) {
  divide(10, 0);
}
 
divide(int a, int b) {
  if (b == 0) {
    throw new Exception('Divide by zero');
  }
  return a / b;
}

捕获和处理异常

现在看看重点的捕获和处理异常。

某种类型的异常可以通过on关键字捕获,如下:

main(List<String> args) {
  try {
    divide(10, 0);
  } on IntegerDivisionByZeroException {
    print('Division by zero.');
  }
}
 
divide(int a, int b) {
  if (b == 0) {
    throw new IntegerDivisionByZeroException();
  }
  return a / b;
}

如果你不知道抛出异常的类型,或者不确定,可以使用catch块处理任意类型的异常。

main(List<String> args) {
  try {
    divide(10, 0);
  } on IntegerDivisionByZeroException {
    print('Division by zero.');
  } catch (e) {
    print(e);
  }
}
 
divide(int a, int b) {
  if (b == 0) {
    throw new Exception('Some other exception.');
  }
  return a / b;
}

Finally

dart也提供了finally块,即是否发生异常这个块都会执行。

main(List<String> args) {
  try {
    divide(10, 0);
  } on IntegerDivisionByZeroException {
    print('Division by zero.');
  } catch (e) {
    print(e);
  } finally {
    print('I will always be executed!');
  }
}
 
divide(int a, int b) {
  if (b == 0) {
    throw new Exception('Some other exception.');
  }
  return a / b;
}

结束

参考

http://thetechnocafe.com/just-enough-dart-for-flutter-tutorial-02-control-flow-and-exception-handling/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,262评论 1 44
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,196评论 0 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,288评论 0 16
  • 公路的两旁 是麦田 一大片的青绿 拔地而起 不远处的田垛上 粉色的桃花开的正艳 我看见一个老人弯着腰 一步一步 ...
    夏初晨阅读 581评论 0 5