美文网首页
Dart基础语法<六> 异常

Dart基础语法<六> 异常

作者: 果汁味Studio | 来源:发表于2020-12-27 09:49 被阅读0次
  1. Dart 提供了 ExceptionError 以及一些子类型,也支持自定义异常类型。
  2. 有别于JavaDart 异常属于非检查异常。方法不一定声明了所抛出的异常, 也不要求捕获任何异常。
  3. Dart支持抛出任何非 null 对象作为异常,不仅限于实现了 Exception /Error 的对象。
  4. catch中无法指定具体异常类型,需要结合on来使用。
  5. 使用 rethrow 关键字可以把捕获的异常重新抛出。
  6. finally关键字的使用和Java一致。
void f1() {
  throw Exception("Juice");
}

void main() {
  try {
    f1();
  } catch (e,s) {
    print(e.runtimeType);
    print(s.runtimeType);
    print(e);
  }
}

运行结果为_Exception _StackTrace Exception: Juice
区别于java 中的catch语句catch(Exception e)Dart指明对象的具体类型。e代表抛出的异常对象,s表示异常堆栈信息。(命名可以不用e s,不需要使用异常堆栈信息,也可以直接改为catch(e)

int f2(int i) {
  if (i == 1) {
    throw 300;
  } else if (i == 2) {
    throw "Juice";
  } else if (i == 3) {
    throw print;
  }
  return i;
}

void f3(int i) {
  try {
    int result = f2(i);
    print(result);
  } on int catch (e) {
    print("int");
  } on String catch (e) {
    print("String");
  } on Function catch (e) {
    e("Function");
  }
}

void main() {
  f3(1);
  f3(2);
  f3(3);
  f3(99);
}

f2方法输入值为1 2 3是分别抛出int String Function对象(非 Exception /Error 对象),其他时候正常返回值。
f3方法则是执行f2方法,捕获异常(结合on使用),并对响应异常进行操作。
输入值为1 时,抛出300,执行f3中捕获int对象操作,输出int
输入值为2 时,抛出字符串Juice,执行f3中捕获String对象操作,输出String
输入值为3 时,抛出方法print,执行f3中捕获Function对象操作(此时的对象e即为print方法),输出Function
输入值为99 时,正常执行,输出99

相关文章

  • Dart基础语法<六> 异常

    Dart 提供了 Exception和Error 以及一些子类型,也支持自定义异常类型。 有别于Java,Dart...

  • dart语法7-泛型

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法8-库

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法10-生成器

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法9-异步

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法11

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法2-内置类型

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法1

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法3-函数

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法4-操作符

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

网友评论

      本文标题:Dart基础语法<六> 异常

      本文链接:https://www.haomeiwen.com/subject/lvlowktx.html