首页 > 编程语言 >C#中的异常捕获 try catch finally

C#中的异常捕获 try catch finally

时间:2024-07-08 19:55:41浏览次数:13  
标签:Console C# try finally WriteLine catch 异常 throw

处理异常提供的四个关键字,try...catch...finally...throw
finally 最后,不管异常是否被抛出都会执行,例如 打开一个文件,不管是否出现异常都需要关闭,
throw: 当问题出现的时候 程序可以抛出一个异常,使用throw关键字抛出异常,

try{执行的代码}

catch(ExceptionName e1){处理异常 throw 抛出异常}
catch(ExceptionName e1){处理异常 throw 抛出异常}
finally{执行的代码}

 Test t1 = new Test();
 try
 {
     Console.WriteLine("1");
     t1.Age = 250;
     Console.WriteLine("2");
 }

 Exception 可以捕获所有的错误类型,如果写的不同类型的错误的时候只能捕获对应类型的错误,例如

FormatException(格式错误) ObjectDisposedException(超出有效范围) IndexOutOfRangeException(数组越界) DataMisalignedException(除数为0); 所以一般把Exception 捕获所有错误类型catch 写到最后

catch (Exception e)
{
    Console.WriteLine(e.Message);
    Console.WriteLine("3");
    // throw e; 抛出错误 立马停掉
    // 解决异常 一般不要直接在catch 直接throw
    // 2.一般在catch 复制一个合法的值
    t1.Age = 20;
}
finally
{
    Console.WriteLine("4");
}
Console.WriteLine(t1.Age);

 Test类

class Test
{
    private int age = 10;
    public int Age
    {
        set
        {
            if (value>0 &&value < 150)
            {
                age = value;
            }
            else
            {
                // 如果超过150 处理抛出一个异常
                // IndexOutOfRangeException 索引超出范围的异常
                throw new IndexOutOfRangeException("age must less 150");
            }
        }
        get
        {
            return age;
        }
    }
}

标签:Console,C#,try,finally,WriteLine,catch,异常,throw
From: https://blog.csdn.net/lu2023_8_6/article/details/140277468

相关文章

  • mormot.core.threads--TBlockingProcess
    mormot.core.threads--TBlockingProcesstype///TBlockingProcess实例的当前状态TBlockingEvent=(evNone,//无状态evWaiting,//等待状态evTimeOut,//超时状态evRaised);//触发状态{$M+}//开启内存管理消息,用于调试......
  • CSE 105 Summer Session
    CSE 105Summer Session 1 2024Homework 1Due date: Sunday July 7 at 11:59pmInstructionsOne member of the group should upload your group submission to Gradescope. During thesubmissionprocess,theywillbepromptedtoaddthenameso......
  • C++数据结构底层实现算法
    1.vector底层数据结构为数组,支持快速随机访问2.list底层数据结构为双向链表,支持快速增删3.deque底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问deque是一个双端队列(double-endedqueue),也是在堆中保存内容的.每个......
  • volatile和static的区别
    作用范围和变量类型:static关键字用于创建类级别的变量或方法,所有类的实例共享同一个static变量的副本。它还可以用于方法、初始化块和内部类。相比之下,volatile仅用于声明变量,确保在多线程环境中的可见性,使所有线程都能看到最新的变量值。内存模型:static变量在内存中有......
  • JavaScript总结2
    概述JavaScript是世界上最流行的脚本语言。JavaScript是一种轻量级的编程语言,可以插入HTML页面的编程代码。JavaScript插入HTML页面后,可由浏览器执行。特点语法简单,易学易用;解释性语言;跨平台,基于对象和事件驱动,可用于客户端。作用可以动态改变网页内容,网页外观;验证表......
  • C++ 入门02:控制结构和循环
    往期回顾:C++入门01:初识C++一、前言在上一篇文章学习中,我们了解了C++程序的基本结构、注释、数据类型、变量以及输入输出的基本用法。这一篇,我们将继续深入学习C++的控制结构和循环。二、控制结构和循环2.1、条件语句条件语句是编程中非常重要的一部分,它们允许......
  • python使用flask框架生成excle返回前端(包含图片、表格、表头灰色、表格加边框)
    python使用flask框架生成excle文档,文档中包含图片和表格,其中表格要包含图片、表格、表头灰色、表格加边框,照片和表格不重叠。逻辑:获得图片的高度,根据高度计算表格从第几行开始插入。效果图:代码:importopenpyxlfromopenpyxl.stylesimportPatternFillfromopenpyxl.d......
  • AMS 326 - Numerical Analysis
    AMS 326 - Numerical AnalysisSummer 2024Course Description: This course provides a comprehensive introduction to numerical analysis, focusing onbothtraditionalmethodsandtheir implementation using modern computer programming.Studen......
  • VSCode中 npm install 安装依赖包太慢了,一直加载不出来问题解决
    1.问题描述采用VSCode打开别人传过来的项目时,需要先加载依赖包,一般是通过终端来加载:终端中输入npminstall. 但是采用npminstall安装依赖包出现问题,一直加载不完,卡到某一地方,如图: 2.尝试解决2.1采用淘宝镜像,依旧慢,最后证书过期2.2采用pnpminstall(做了一部分)npmins......
  • TCP基础
    TCP(传输控制协议,TransmissionControlProtocol)是互联网协议套件中的核心协议之一,提供可靠、有序和错误检查的数据传输。以下是对TCP的详细讲解,帮助你理解它的工作原理及其在固件和软件通信中的应用。1.基本概念TCP是一种面向连接的协议,主要特点包括:可靠性:TCP保证数据包的传输......