• .net技术第四章----程序流程和异常处理


    前言

    • 顺序结构

    • 选择结构
      if语句、switch语句

    • 循环结构
      for语句、while语句、do…while语句和foreach语句

    • 跳转语句
      goto、break、continue、return、throw

    • C#异常处理

    顺序结构

    • C#程序中语句执行的基本顺序按各语句出现位置的先后次序执行
      在这里插入图片描述

    选择结构

    • 两种控制分支的条件语句:if语句和switch语句

    在这里插入图片描述

    • 单分支结构
      if (条件表达式)
      语句/语句块statement(s);

    • 双分支结构
      if (条件表达式)
      语句/语句块1;
      else
      语句/语句块2;

    • 多分支结构

    if (条件表达式1)
    语句/语句块1;
    else if (条件表达式2)
    语句/语句块2;

    else if (条件表达式n)
    语句/语句块n;
    [else
    语句/语句块n+1;]

    循环结构

    • C#提供4种不同的循环机制:for、while、do…while、foreach

    for循环语句

    计数型循环语句,一般用于已知循环次数的情况,所以也称为定次循环

    for (initializer; condition; iterator)
    {
       循环体语句序列;
    }
    
    sumOdd =0; sumEven = 0for (int i=1; i<=100;i+=2) sumOdd +=i;
    for (int i=2; i<=100;i+=2) sumEven +=i;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    while循环

    while(条件表达式)
    {
    循环体语句序列;
    }

    do…while循环

    该循环的测试条件在执行完循环体之后执行,而while循环的测试条件在执行循环体之前执行

    do
    {
    循环体语句序列;
    } while(条件表达式);

    int i = 1; int sum = 0;
    do
    {
         sum += i; i++; //1~100中所有数的和
    } while (i <= 100);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    foreach循环

    用于循环访问数组或集合以获取所需信息

    foreach( 类型名称 变量名称 in 数组或集合名称)
    {
       循环体语句序列;
    }
    int[] myArray = new int[3] { 10, 20, 30 };  //3个整数的整数数组
    foreach (int item in myArray) Console.Write(item+" "); //输出整数数组各元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    循环的嵌套

    在一个循环体内又包含另一个完整的循环结构,称为多重循环结构

              String s;
                for (int i = 1; i <= 9; i++)
                {
                    s = "";
                    for (int j = 1; j <= 9; j++)
                    {   //字符串左对齐,在右边用空格填充以达到指定的总长度8
                        s += (String.Format("{0}*{1}={2}", i, j, i * j)).PadRight(8);
                    }
                    Console.WriteLine(s);
                }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    跳转结构

    使用跳转语句执行分支,该语句导致立即传递程序控制
    goto
    break
    continue
    return
    throw

    goto语句

    将程序控制直接转到由标签标记的语句
    goto identifier;
    goto case 常量表达式;
    goto default;

            int i = 1, sum = 0;
            loop:
                if (i <= 100)
                {
                    sum += i; i++; goto loop;
                }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    break语句

    • 在多分支选择switch结构中的作用是跳出switch结构,继续执行switch语句的后继语句

    • break语句还可以用于退出for、foreach、while或do…while循环,即提前结束循环,接着执行循环语句的后继语句

    continue语句

    • 类似于break,也必须在for、foreach、while或do…while循环中使用

    • continue语句仅结束本次循环,并返回到循环的起始处,循环条件满足的话就开始执行下一次循环

    • break语句则是结束循环,跳转到循环的后继语句执行

    • continue语句只应用于最里层的语句。若要穿越多个嵌套层转移控制,必须使用goto语句

    return语句

    终止它出现在其中的方法的执行,并将控制返回给调用方法

    int j = 0;
    for (int i =100; i<= 200; i++)
    {
        if(i%3==0) continue;
        Console.Write({0}, i);
        j++;
        if(j%10==0) Console.WriteLine();
    }
    static double CalculateArea(int r)   // 计算面积
            {
                double area = r * r * Math.PI;
                return area; //方法CalculateArea以double值的形式返回变量Area
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    C#异常处理

    三种错误:编译错误,运行时错误,逻辑错误

    C#采用异常来处理系统级和应用程序级的错误状态,如:零除异常、下标越界、I/O错误等
    try
    {
    // 可能引发异常的语句
    }
    catch (异常类型 异常变量)
    {
    // 在异常发生时执行的代码
    }
    finally
    {
    // 最终必须执行的代码(即使发生异常),如释放资源等
    }

            int i1 = 1, i2 = 0, i3, i4;
            try
            {
                i3 = i1 / i2;                     //自动抛出异常DivideByZeroException
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine("零除错误!");
            }
            try
            {
                i4 = Int32.Parse("abc");       //自动抛出异常System.FormatException
            }
            catch (FormatException e)
            {
                Console.WriteLine("数值字符串格式错误!");
                throw e;                     // 重新抛出异常
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • try-catch语句:一个try块后接一个或多个catch块

    • try-finally语句:一个try块后接一个finally块

    • try-catch-finally语句:一个try块后接一个或多个catch块,后面再跟一个finally块

    • 内置异常类:System.Exception

    【例4.23】自定义异常示例(InvalidNumberException.cs)。创建自定义异常,处理应用程序中出现负数参数的异常(例如,学生成绩处理类,不容许成绩为负数)

    【例4.24】CLR自动抛出异常示例(ExceptionThrowByCLR.cs)

    【例4.25】程序代码抛出异常示例(TryCopyObject.cs):调用方法,如果传入参数为null,则抛出异常

    【例4.26】捕获处理异常示例(TryCatchTest.cs)

  • 相关阅读:
    [答疑]是不是直接写“发红包”而不是“请求微信发红包”
    CNN鲜花分类
    Debian安装docker全流程
    鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统
    14.mybatis拦截器原理
    含文档+PPT+源码等]精品基于SpringBoot的便捷网住宿预约系统的设计与实现包运行成功]Java毕业设计SpringBoot项目源码
    【前端Vue3】——JQuery知识点总结(超详细)
    模板、策略以及工厂模式
    华为交换机基础配置(telnet/ssh登录)
    边缘计算:基于tflite实现andriod边缘端回归预测推理实战
  • 原文地址:https://blog.csdn.net/weixin_51422230/article/details/127685797