软件运行过程中,如果出现了软件正常运行不应该出现的情况,软件就出现了异常。这时候我们需要去处理这些异常。或者让程序终止,避免出现更严重的错误。或者提示用户进行某些更改让程序可以继续运行下去。

C#编程语言本身就为我们提供了这种异常处理机制。

C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。或者试图将一个字符串"aaa"转换成整数。

异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理时建立在四个关键词之上的:trycatchfinallythrow

  • try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。
  • catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。
  • finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。
  • throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。

语法

假设一个块将出现异常,一个方法使用 try 和 catch 关键字捕获异常。try/catch 块内的代码为受保护的代码,使用 try/catch 语法如下所示:

try
{
// 引起异常的语句
}
catch (ExceptionName e1)
{
// 错误处理代码
}
catch (ExceptionName e2)
{
// 错误处理代码
}
catch (ExceptionName eN)
{
// 错误处理代码
}
finally
{
// 要执行的语句
}

C#提供了很多种异常,我们在这里只要掌握最基本的异常Exception就可以啦。在catch语句中我们只处理Exception这个最基本的异常。

下面我们看一个具体的例子,来更加清楚的理解一下C#的异常处理。

你创建一个项目。解决方案名称为Sloution22,项目名称为Exercise22,项目类型为控制台程序。点击Program.cs. 在里边加入这些代码。

我在这里简要的说明一下这段代码。

1. 27行-45行 我们新建了一个ExceptionTest 方法。在这个方法中要求用户输入一个整数。如果用户输入一个字符串,我们的程序会产生异常。

2. 39行 我们用throw抛出了一个我们自己定义的异常。在里边加入了我们想传递的一些信息。

3. 41行-44行 finally语句是可选的。只有当需要做一些例如资源释放的操作的时候,才是需要的。不管有没有异常产生 finally部分都会执行。

4. 13行-23行 调用ExceptionTest方法。同时捕获异常。

5. 16行 如果调用ExceptionTest方法出现异常,这条语句不会执行。否则正常执行。

6. 21行 输出异常的简要信息

7. 22行 输出异常的详细信息。例如出错的代码位置。

运行结果

1. 用户输入字符串,产生异常

2. 用户输入整数,程序正常执行

练习

  1. 读懂代码,在关键的地方加上注释

  2. 查看详细的错误信息,定位是哪一行代码出现了问题。

  3. 去掉第39行 throw new Exception("转换出现异常");再次查看详细的错误信息,看看哪一行代码出现了问题。想想是什么原因。如果不明白,记得咨询我哦。

  4. finally语句一定会执行吗?去掉main方法的try catch 语句,调试一下程序。


付费解答C#入门学习过程中碰到的各种问题。

零基础学习C#入门,大多数的问题都可以通过自学或借助互联网解决。

但是还是会有一些问题,不是那么容易解决,成为了你学习的绊脚石。最后甚至造成你学习的半途而废。通常学习C#编程入门,你会遇到20到30多个你不能很容易解决的问题。

这个时候,你最需要什么呢?

对!一个专业的老师给你帮助!

你在学习本课程中,遇到任何问题都可以通过qq或email想本教程作者进行求助。

只需30元,你就可以得到本教程作者的三次专业解答。所以你只需不到300元就可以顺利的完成C#入门,从此推开软件行业的大门。

付费方式非常简单:

用微信扫描下面的二维码。在付款留言中留下你的qq号或email地址就可以啦。

教育不是要便宜,而是要可靠!真正聪明的人,更懂得花钱让专业的人为自己服务,提高自己的效率。

老师qq:2040227296

老师email:2040227296@qq.com

22 C#中的异常处理入门 try catch throw的更多相关文章

  1. T-SQL编程中的异常处理-异常捕获(catch)与抛出异常(throw)

    本文出处: http://www.cnblogs.com/wy123/p/6743515.html T-SQL编程与应用程序一样,都有异常处理机制,比如异常的捕获与异常的抛出,本文简单介绍异常捕获与异 ...

  2. C++异常处理:try,catch,throw,finally的用法

    写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使 ...

  3. 异常处理(try catch throw)详解(C++)

    选择异常处理的编程方法的具体原因如下: 1.把错误处理和真正的工作分开来: 2.代码更易组织,更清晰,复杂的工作任务更容易实现: 3.毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了: 4 ...

  4. C++ 异常处理(try catch throw)、命名空间

    一.c++工具 模板(函数模板.类模板).异常处理.命名空间等功能是c++编译器的功能,语言本身不自带,这些功能已经成为ANSI C++标准了,建议所有的编译器都带这些功能,早期的c++是没有这些功能 ...

  5. 【Unity|C#】基础篇(15)——异常处理(try/catch/throw)

    [学习资料] <C#图解教程>(第22章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...

  6. C++异常处理(try catch throw)完全攻略

    程序运行时常会碰到一些异常情况,例如: 做除法的时候除数为 0: 用户输入年龄时输入了一个负数: 用 new 运算符动态分配空间时,空间不够导致无法分配: 访问数组元素时,下标越界:打开文件读取时,文 ...

  7. T-SQL编程中的异常处理-异常捕获(try catch)与抛出异常(throw)

    本文出处: http://www.cnblogs.com/wy123/p/6743515.html T-SQL编程与应用程序一样,都有异常处理机制,比如异常的捕获与异常的抛出(try catch th ...

  8. C++异常处理: try,catch,throw,finally的用法

    写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使 ...

  9. 编写高质量代码改善C#程序的157个建议——建议86:Parallel中的异常处理

    建议86:Parallel中的异常处理 建议85阐述了如何处理Task中的异常.由于Task的Start方法是异步启动的,所以我们需要额外的技术来完成异常处理.Parallel相对来说就要简单很多,因 ...

随机推荐

  1. int *ptr=(int *)(&a+1)问题的探讨

    从网络上看到这样一道有意思的题目,是关于数组与指针的问题,描述如下: main() { ]={,,,,}; ); printf(),*(ptr-)); } 输出为:2,5 请解释以上代码的输出结果. ...

  2. java 8种基本类型与对应的包装类

    数据类型 包装类 字节长度 默认值 有效位 byte Byte 1 0 -128~127 short Short 2 0 -32768~32767 int Integer 4 0 -2^31-1~2^ ...

  3. MongoDB小结08 - update【$pull】

    它可以删除所匹配的值,如果[1,1,2,1] 执行pull 1 后,只剩下[2]

  4. Sqlserver数据库发送邮件

    目录 1. Sqlserver数据库发送邮件 1.1. 概念了解 1.2. 配置 1.3. 测试发送邮件 1.3.1. 代码测试 1.3.2. 工具测试 1.4. 查看邮件日志 1. Sqlserve ...

  5. Use Elasticksearch to solve TOP N issue

    The raw data is like timestamp, router, interface, src_ip, dst_ip, protocol, pkts 10000000, 1.1.1.1 ...

  6. Vuzzer自动漏洞挖掘工具简单分析附使用介绍

    Vuzzer 是由计算机科学机构  Vrije Universiteit Amsterdam.Amsterdam Department of Informatics 以及 International ...

  7. 码农小汪-spring框架学习之2-spring IoC and Beans 控制反转 依赖注入 ApplicationContext BeanFactory

    spring Ioc依赖注入控制反转 事实上这个东西很好理解的,并非那么的复杂. 当某个Java对象,须要调用还有一个Java对象的时候(被依赖的对象)的方法时.曾经我们的做法是怎么做呢?主动的去创建 ...

  8. Tomcat启动一半闪退问题解决

    近期刚刚接触Tomcat.对其还不是非常了解. 在这几天,遇到一个Tomcat启动闪退的问题.通过查阅各种资料.算是完美解决.在此分享给朋友们. 首先.确定你的问题在哪里.有两个方法,你能够通过日志去 ...

  9. cocos2dx塔防游戏逻辑

    cocos2dx 塔防游戏逻辑 1.欢迎界面 2.tield制作游戏地图,空块设置cantouch属性为1 3.设置地图锚点,把锚点增加一个锚点容器,给怪物的行走函数传入 该锚点容器參数,让怪物依照锚 ...

  10. java 学习第一步---安装JDK以及配置环境变量

    1.下载jdk 链接:https://pan.baidu.com/s/1FiTGhxdHK0KTFawdkLT26g    提取码:zcy0    我已经在官网上面下载了1.8的jdk,通过百度云盘分 ...