流程控制语句
判断
-
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 中能抛出任何东西,但是为了开发安全,我们一般是使用内置的Error和Exception来抛出。
除了普通的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'); }