Dart Learn Notes 04

流程控制语句

流程控制语句的作用就是控制代码的执行流程。

if and else

var a = 10;
if(a > 10){
    print('ok');
}else if( 5 < a <=10 ){
    print('soso');
}else{
    print('not ok');
}

for循环

var list = [];
for(int i =  0; i<10; i++){
    list.add(i);
}

list.forEach((item) =>  print(item));

for (var item in list) {
    print(item);
}

三种循环方式,写起来有一种在写java代码的感觉,不得不说,为了google为了照顾广大的android程序员确实在dart的语法上特别亲和。

while and do-while

int a = 3;
while(a > 0){
    print(a);
    a--;
}

do{
    print(a);
    a--;
}while(a > 0);

区别就是do-while会先执行一次。

break and continue

for(int a = 0; a < 9 ;a ++){
    if(a == 3){
        break;
    }
    print(a);
}

for(int a = 0; a < 9 ;a ++){
    if(a == 3){
        continue;
    }
    print(a);
}

break 是到达条件的时候循环就不执行了,continue是到达条件的时候本次不执行,下次执行。

switch and case

var type = 2;
switch(type){
case 1:
    print('top');
    break;
case 2:
    print('2th');
    break;
default:
    print('default');
}

需要注意java中如果条件后不加break,很可能会造成switch的case穿透。但是在dart中不会,因为如果不写break,运行就会报错。在Dart中,Switch的case条件下,要么执行语句和break都写,要么都不写,违反规则,dart会让程序直接报错。

断言

assert会在运行时判断条件是否成立,如果条件不成立,会抛出异常。

assert( a > 10);

异常

throw

Dart中允许抛出异常,异常有两种,Error,Exception,但是使用 throw 抛出异常的时候,不限于这两种异常及其子类,你甚至可以直接抛出一个对象。和Java不同,dart中是非检查异常,而且,它没有throws这个关键字,不能用throws在方法上直接抛异常。

throw new  FormatException('Expected at least 1 section');

throw 'this is a Exception';

catch

捕获异常,进行处理

try{
    method();
}on Exception catch (e){
    print(e);
}

finally

如果要保证捕获到异常后仍然要执行后续代码,使用finally

try{
    method();
}on Exception catch (e){
    print(e);
}finally{
    print('finally');
}