学习flutter必会的dart知识(二)

大伙都知道写flutter的语言是dart,所以深入flutter前还是有一些dart的基础知识需要了解。 本文翻译自
如果不喜欢看中文请自行查看英文版

上一篇文章学习了变量,类型和函数,这一节学习流程和错误处理。进入教程前还是强烈推荐先阅读官方文档,完后再来看这篇教程。

流程控制

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 循环

最经典的循环

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

While 循环

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

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是dart自带的类型

也可以抛出只字符串的异常

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关键字,不管是否抛出异常,都会执行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;
}

    原文作者:xyz
    原文地址: https://zhuanlan.zhihu.com/p/39851374
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞