大伙都知道写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;
}