首页 > 编程语言 >【C#之Try……Catch实例】

【C#之Try……Catch实例】

时间:2022-10-17 18:04:37浏览次数:38  
标签:try Convert Console C# Try Catch finally ToDouble catch


前言:


这个阶段我在学习设计模式,今天准备实战了,遇到了try……catch,在学C#的时候还记忆深刻呢?现在不懂得期中的道理了,温故知新,知识需要反复!今天,从实例中在温故一下Try……Catch,而顺道说说try……catch……finally 。


中心:


在C#中Try……Catch异常处理中,如果没有TRY,程序直接就会崩溃,如果没有Catch,异常总是向上层抛出或中断程序。 catch可以有多个,也可以没有,每个catch可以处理一个特定的异常。



(一)构造


<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><span >  </span>try
{
//有可能发生错误的程序块
}
catch (Exception)
{
//当发生错误的时候才会执行的代码块
throw;
} </span></span></span>


(二)实例中运用


<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace count
{
class Program
{
static void Main(string[] args)

{
try
{
Console.Write("请输入数字A:"); //显示请输入数字A:
string strNumberA = Console.ReadLine(); //获取用户输入的信息
Console.Write("请输入运算符(+、-、*、/):");//显示输入运算符
string strOperate = Console.ReadLine();//获取用户输入的预算符
Console.Write("请输入数字B:");//请输入数字B:
string strNumberB = Console.ReadLine();//请输入数字B:
string strResult = "";//运算结果
switch (strOperate )
{
case "+": //分支语句“+”运算
strResult = Convert.ToString(Convert.ToDouble
(strNumberA) + Convert.ToDouble(strNumberB));

break; //结束当前程序
case "-"://分支语句“-”运算
strResult = Convert.ToString(Convert.ToDouble
(strNumberA) - Convert.ToDouble(strNumberB));
break; //结束当前程序
case "*"://分支语句“*”运算
strResult = Convert.ToString(Convert.ToDouble
(strNumberA) * Convert.ToDouble(strNumberB));

break; //结束当前程序
case "/"://分支语句“/”运算
if (strNumberB != "0")//如果数字B不等于0
strResult = Convert.ToString(Convert.ToDouble //执行运算
(strNumberA) / Convert.ToDouble(strNumberB));
else //否则
strResult = "除数不能为0";//结果为“除数不能为0”
break; //结束当前程序

}
Console.WriteLine("结果是" + strResult);//显示结果
Console.ReadLine();

}
catch (Exception ex)//处理错误信息
{

Console.WriteLine("您的输入有错:" + ex.Message);//显示错误信息
}

}
}
}</span></span></span>

(三)运行结果

1.正常:                                                                       2.除数为0


【C#之Try……Catch实例】_trycatch

    

【C#之Try……Catch实例】_代码块_02

【C#之Try……Catch实例】_代码块_03

3.输入错误


(四)Try……Catch……finally(实际上finally可加可不加)


<span style="font-size:18px;"><span style="font-size:18px;"> try
{
//有可能发生错误的程序块
}
catch (Exception)
{
//当发生错误的时候才会执行的代码块
throw;
}
finally
{
//无论是否发生错误都会执行的代码块
}</span></span>

(五)在上面的实例中加入finally代码


<span style="font-size:18px;"><span style="font-size:18px;"> finally
{
Console.WriteLine("谢谢您的使用!欢迎下次光临!");
}</span></span>

运行效果:

【C#之Try……Catch实例】_trycatch_04






(六)补充


可加入下面代码,进行限度提示


<span style="font-size:18px;"><span style="font-size:18px;"><pre name="code" class="csharp">catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Indexoutof异常:" + "不出现异常的限制" + ex.Message);
}</span></span>




总结:


  • 不要过多使用 catch。通常应允许异常在调用堆栈中往上传播。
  • 使用 try-finally 并避免将 try-catch 用于清理代码。在书写规范的异常代码中,try-finally 远比 try-catch 更为常用。

关于异常就介绍到这里,如果有问题,欢迎大家指正!



标签:try,Convert,Console,C#,Try,Catch,finally,ToDouble,catch
From: https://blog.51cto.com/u_15586641/5763787

相关文章

  • 【C#之控制台与窗体应用程序】
    前言:学习一个东西,是一个逐步的过程,如盲人摸象,这是一个过程,到了最后的最后,会认识全局。这是在学习C#视频的一个感受。开始学习C#的时候,新建项目—控制台应用程序,然后开始敲代......
  • 【C#之值类型vs引用类型】
    前言C#的数据类型分为两种,一种是值类型,一种是数据类型,从宏观上来看,感觉很重要的,并且很容易弄混,所以,这篇博客以值类型&引用类型为主角,以对比的形式进行分析,并加以举例,下面咱......
  • 【单片机】8255A.B.C口输出方波
    【单片机】8255A.B.C口输出方波​​一、操作目的​​​​二、操作内容​​​​三、预备知识​​​​四、程序框图​​​​五、程序清单​​​​六、代码详解​​一、操作目......
  • 【LeetCode】268. 丢失的数字(C++)
    268.丢失的数字​​1题目描述​​​​2示例描述​​​​2.1示例1​​​​2.2示例2​​​​2.3示例3​​​​2.4示例4​​​​3解题提示​​​​4解题思路​​​​5......
  • 【LeetCode】485. 最大连续 1 的个数(C++)
    485.最大连续1的个数​​1题目描述​​​​2示例描述​​​​3解题提示​​​​4解题思路​​​​5源码详解(C++)​​1题目描述给定一个二进制数组,计算其中最大连续......
  • 【题解】CF11D A Simple Task(状压 DP)
    【题解】CF11DASimpleTask题目链接CF11DASimpleTask题意概述给定一张\(n\)个点\(m\)条边的无向图,无重边自环,点数不超过\(19\),求无向图中环的数量。思路分......
  • -bash: warning: setlocale: LC_CTYPE: cannot change locale (zh_CN.UTF-8)
    Linux服务端A:RedHatEnterpriseLinuxrelease8.Linux客户端B:Mint20当mint20去连接redhat8时是正常的,都没问题,但是ssh连到redhat8后要使用tab补齐时就会报错,报错如......
  • opencv读取rtsp流(python)
    使用opencv读取rtsp流方法,因其简单将不在解释:importcv2defread_rtsp():cap=cv2.VideoCapture('rtsp://admin:[email protected]:554')fourcc=cv......
  • 【LeetCode】面试题 16.17. 连续数列(C++)
    面试题16.17.连续数列​​1题目描述​​​​2示例描述​​​​3解题思路​​​​4源码详解(C++)​​1题目描述给定一个整数数组,找出总和最大的连续数列,并返回总和。2......
  • python学习记录:爬取起点小说信息保存到excel爬虫源码
     importxlwtimportrequestsfromlxmlimportetreeimporttimeimportxlsxwriterheaders={'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537......