.NET C#基础教程第8天:异常处理

作者:微信公众号:【架构师老卢】
6-9 19:37
33

概述:介绍在本模块中,您将获得有关异常、处理异常的过程以及 C# 支持的不同异常处理模式的知识。学习目标:检查例外的基本类别,并查看一些常见的系统例外。开发人员的先决条件为 C# 应用程序开发配置的 Visual Studio Code能够创建具有业务逻辑迭代、选择和自定义方法的 C# 控制台应用程序了解 C 语言中的错误处理和异常#使用适用于 C 的 Visual Studio Code 调试工具的经验#开始在 C# 中,异常处理是通过使用 try、catch 和 finally 关键字来实现的。这些关键字中的每一个都与不同的代码块相关联,并在管理异常时具有特定目的。首先,在控制台应用程序中创建一

介绍

在本模块中,您将获得有关异常、处理异常的过程以及 C# 支持的不同异常处理模式的知识。

学习目标:

  • 检查例外的基本类别,并查看一些常见的系统例外。

开发人员的先决条件

  • 为 C# 应用程序开发配置的 Visual Studio Code
  • 能够创建具有业务逻辑迭代、选择和自定义方法的 C# 控制台应用程序
  • 了解 C 语言中的错误处理和异常#
  • 使用适用于 C 的 Visual Studio Code 调试工具的经验#

开始

在 C# 中,异常处理是通过使用 try、catch 和 finally 关键字来实现的。这些关键字中的每一个都与不同的代码块相关联,并在管理异常时具有特定目的。

首先,在控制台应用程序中创建一个名为“”的静态类文件。将提供的代码片段插入到此文件中。ExceptionHandling.cs

public static class ExceptionHandling
{
    /// <summary>
    /// Outputs
    /// Hello from try block
    /// Hello from exception block
    /// Hello from finally block
    /// </summary>
    public static void SimpleExceptionBlock()
    {
        try
        {
            // try code block - code that may generate an exception
            Console.WriteLine("Hello from try block");
            throw new NotImplementedException();
        }
        catch
        {
            // catch code block - code to handle an exception
            Console.WriteLine("Hello from exception block");
        }
        finally
        {
            // finally code block - code to clean up resources
            Console.WriteLine("Hello from finally block");
        }
    }
}

从 main 方法执行代码,如下所示

#region Day 8 - Exception Handling  
  
ExceptionHandling.SimpleExceptionBlock();  
  
#endregion

控制台输出

Hello from try block  
Hello from exception block  
Hello from finally block

嵌套异常处理

将另一个方法添加到同一个静态类中,如下所示

/// <summary>
/// Outputs
/// Hello from try block
/// Hello from inner finally block
/// Hello from exception block
/// Hello from outer finally block
/// </summary>
public static void NestedExceptionBlock()
{
    try
    {
        // Step 1: code execution begins
        try
        {
            // Step 2: an exception occurs here
            Console.WriteLine("Hello from try block");
            throw new NotImplementedException();
        }
        finally
        {
            // Step 4: the system executes the finally code block associated with the try statement where the exception occurred
            Console.WriteLine("Hello from inner finally block");
        }

    }
    catch // Step 3: the system finds a catch clause that can handle the exception
    {
        // Step 5: the system transfers control to the first line of the catch code block
        Console.WriteLine("Hello from exception block");
    }
    finally
    {
        Console.WriteLine("Hello from outer finally block");
    }
}

在此方案中,将展开以下事件序列:

  1. 程序开始在外部 try 语句的代码块内执行。
  2. 在内部 try 语句的代码块中触发异常。
  3. 运行时标识链接到外部 try 语句的 catch 子句。
  4. 在将控制权转移到 catch 代码块的初始行之前,运行时会执行绑定到内部 try 语句的 final 子句。
  5. 随后,控制权转移到捕获代码块的开头,在该块中执行用于处理异常的代码。

从 main 方法执行代码,如下所示

#region Day 8 - Exception Handling  
  
ExceptionHandling.NestedExceptionBlock();  
  
#endregion

控制台输出

Hello from try block  
Hello from inner finally block  
Hello from exception block  
Hello from outer finally block

源代码获取:公众号回复消息【code:86760

相关代码下载地址
重要提示!:取消关注公众号后将无法再启用回复功能,不支持解封!
第一步:微信扫码关键公众号“架构师老卢”
第二步:在公众号聊天框发送code:86760,如:code:86760 获取下载地址
第三步:恭喜你,快去下载你想要的资源吧
阅读排行