Flutter高手秘籍之Dart操作符、流程控制语句、异常(四)

前言

前几篇文章分别讲解了Dart中的变量、内置类型和函数(方法),对Dart的基本语法已经有了较多的了解,那么今天来说一下Dart中的操作符、流程控制语句和异常。前几篇文章没有看的,建议先看一下前两篇文章。

Flutter高手秘籍之Dart变量

Flutter高手秘籍之Dart内置类型

Flutter高手秘籍之Dart函数(方法)

Flutter高手秘籍之Dart操作符、流程控制语句、异常

Flutter高手秘籍之Dart类的点点滴滴

Flutter高手秘籍之Dart泛型和库

操作符

上面这幅图中就是Dart中的操作符,标为黑色的操作符和Java中使用基本一样,这里也就不过多赘述,咱们来仔细看看标红Java中没有的操作符:

  • 后缀操作: ?.

    如果写过Kotlin的话,可以跳过这段了,这里的问号点和Kotlin中基本一致,都是为了判空而出现的,那么下面来看一下使用方式吧:

    main() {
      String a;
      print(a.length != null ? a.length : '');
    }
    

    上面就是咱们平时写的代码,一个三目表达式来进行判空。但是在Dart中可以不这样写,可以直接使用问号点。

    main() {
      String a;
      //print(a.length != null ? a.length : '');
      print(a?.length);
    }
    

    是不是很方便?以后判空可以直接使用**"?."**了

  • 除(取整):~/

    这个操作符其实很简单,只是对数字进行取整,下面是实例代码:

    print(1/2);
    print(1~/2);
    

    上面代码的输出值是0.5和0

  • 类型操作:as

    这个和Kotlin中的as也基本一样,是对数据进行类型转换,很简单,直接看代码:

    num n = 1;
    int n2 = n as int;
    
  • 类型操作: is

    num n1 = 1.0;
    if(n1 is int){
      print("int");
    }else{
      print("double");
    }
    
  • 类型操作:is!

    从名称上就可以知道和上面的is正好相反,就不写代码验证了。

  • 判空:??

    这个上面也写出来了,意思就是判空,下面直接看一下使用方法吧:

    bool aaa;
    aaa = aaa ?? false;
    
  • 级联:

    这个其实就是链式调用,之前的文章中写过,当时的例子是StringBuffer:

     StringBuffer stringBuffer = StringBuffer();
     stringBuffer..write("sss")..write("ssss");
    

操作符就说到这里吧,掌握好操作符在写代码的时候会事半功倍的,希望大家都能掌握好。

流程控制语句

这个,怎么说,稍微提一下吧,这个是基础的基础,Dart中的流程控制语句和Java基本一样,直接进行使用就行。

不是不想写,if语句、for循环、while循环、brake、continue、switch、case,没了,这就是Dart的流程控制语句,如出一辙。跳过。

异常

Dart 提供了 Exception 和 Error 类型, 以及一些子类型。还可以定义自己的异常类型。但是,Dart 代码可以抛出任何非 null 对象为异常,不仅仅是实现了 Exception 或者 Error 的对象。

下面这幅图是Dart中的Exception

在这里插入图片描述

下面这幅图是Dart中的Error

抛出异常

  • 这个和Java中写法一样,所有的 Dart 异常是非检查异常。 方法不一定声明了他们所抛出的异常, 并且你不要求捕获任何异常。

    // 抛出Exception 对象
    // throw new FormatException(‘格式异常');
    
    // 抛出Error 对象
    // throw new OutOfMemoryError();
    
  • Dart 代码可以抛出任何非 null 对象为异常,不仅仅是实现了 Exception 或者 Error 的对象。

    // 抛出任意非null对象
    // throw '这是一个异常';
    

捕获异常

  • 所有的 Dart 异常是非检查异常。 方法不一定声明了他们所抛出的异常, 并且你不要求捕获任何异常。可以使用on 或者 catch 来声明捕获语句,也可以 同时使用。使用 on 来指定异常类型,使用 catch 来 捕获异常对象。

     try {
        throw new OutOfMemoryError();
      } on OutOfMemoryError {
        print('没有内存了');
      }
    
  • catch() 可以带有一个或者两个参数, 第一个参数为抛出的异常对象, 第二个为堆栈信息 (一个 StackTrace 对象)。

      try {
        throw new OutOfMemoryError();
      } catch (e, s) {
        print('Exception details: $e');
        print('Stack Trace: $s');
      } finally {
        print('end');
      }
    
  • 可以使用rethrow把捕获的异常重新抛出。

     try {
        throw new OutOfMemoryError();
      } catch (e, s) {
        print('Exception details: $e');
        print('Stack Trace: $s');
        rethrow;
      }
    

总结

到这里为止Dart的第四篇文章完成。本篇文章主要讲解了一下Dart语言的操作符、流程控制语句和异常。下一篇文章讲解一下Dart中的类(非常重要),希望大家能够喜欢,对大家如果有帮助的话,欢迎点赞关注,如果有异议,可以留言进行讨论。

发布了95 篇原创文章 · 获赞 255 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/haojiagou/article/details/104737689