Dart 语言学习 05 函数和异常

Dart 语言学习 05

Author : ScorpioDong

1. 函数

函数是可读,可维护和可重用代码的构建块。函数是一组用于执行特定任务的语句。函数将程序组织成逻辑代码块。一旦定义,可以调用函数来访问代码。这使得代码可以重用。此外,函数可以轻松读取和维护程序的代码。

1.1 函数定义

定义函数的标准语法如下:

返回值类型 函数名(形参列表) {
    函数体和返回值
}
  • 返回值类型可以省略,Dart会自动推测返回值类型。
  • 形参列表可以为空,表示不接受参数传入。
  • 函数体中可以没有返回值,这样就是无返回值函数,返回值类型为void类型。
test() {
    print("Hello Dart");
}

特别的,如果函数体只有一条语句,可以使用=>简写写法,也称Lambda函数或者箭头函数,如:

void test1() => print("Hello");
int test2() => 2 + 3;

其等效于:

void test1() {
    print("Hello");
}

int test2() {
    return 2 + 3;
}

1.2 可选参数

可选参数是Dart语言的一个特征,其分为命名可选参数,位置可选参数。

1.2.1 命名可选参数

调用函数时可以指定命名参数参数名:值,定义函数时,使用{参数名1,参数名2}来指定命名参数:

void test({int a, int b}) {...}

main() {
    test(b:3, a:5);
}
  • 命名可选参数可以在函数调用时指定参数名传参,而不需严格按照参数列表顺序传参。

1.2.2 位置可选参数

将形式参数使用[]包裹来标记参数为位置可选参数:

void test(String a, [int b]) {
    var result = "$a is String";
    if (b != null) {
        result = "$result, $b is int";
    }
    print(result);
}

main() {
    test("abc");
    test("abc", 23);
}

调用结果:

abc is String
abc is String, 23 is int
  • 标记为位置可选参数的函数在调用时可以不传入位置可选参数。
  • 在定义函数时,一定要处理好可选参数的使用。

1.2.2 可选参数默认值

  • 在定义方法的时候,可以使用 = 来定义可选参数的默认值。
  • 默认值只能是编译时常量。
  • 如果没有提供默认值,则默认值为 null
void test({bool bold = false, bool hidden = false}) {...}

main() {
    test(bold: true);
}

1.3 main函数

  • 每个应用程序都必须具有顶级main()函数,该函数用作应用程序的入口点。
  • main函数的返回值为void。
  • main函数具有一个可选参数List<String> args

2. 异常

异常(或异常事件)是在执行程序期间出现的问题。发生异常时,程序的正常流程中断,程序/应用程序异常终止。
Dart中的每个异常都是预定义类Exception的子类,必须处理异常以防止应用程序突然终止。
Dart 提供了 Exception 和 Error 类型, 以及一些子类型。 当然也可以定义自己的异常类型。

2.1 捕获异常

可以使用try/on/catch块处理异常:

try{
    可能发生异常的代码
} on 异常名 {
    捕获该异常
} catch (异常对象) {
    捕获其他所有异常
} finally {
    最终执行
}
  • 通过指定多个 catch 语句,可以处理可能抛出多种类型异常的代码。
  • 与抛出异常类型匹配的第一个 catch 语句处理异常。
  • 如果 catch 语句未指定类型, 则该语句可以处理任何类型的抛出对象。
  • 不管是否抛出异常, finally 中的代码都会被执行。

2.2 抛出异常

Dart语言使用throw关键字抛出异常。
不只是异常,throw可以抛出任意的对象…

void test() => throw new FormatException();
void test2() => throw "Hello I'm Exception";

2.3 自定义异常

Dart中的每个异常类型都是内置类Exception的子类。Dart可以通过扩展现有异常来创建自定义异常。

class MyException implements Exception {
    // 自定义构造方法、成员变量和成员方法。
}
发布了45 篇原创文章 · 获赞 37 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/m0_37771142/article/details/104865941
今日推荐