新手C#异常的学习2018.08.07
异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。
class Program
{
static void Main(string[] args)
{
System.IO.File.Delete(@"F:\output.txt");
System.IO.File.Delete(@"F:\面向对象2.exe");
System.IO.File.Delete(@"F:\input.txt");
Console.ReadKey();
}
}
上述代码中,若面向对象2.exe文件被打开,程序执行时会抛异常,我们会发现output.exe已经被删除,但是input.exe并未被删除,可见异常产生时,异常代码前面的代码会被执行,后面的不会被执行,为了处理异常产生,采用try,catch关键词。
class Program
{
static void Main(string[] args)
{
System.IO.File.Delete(@"F:\output.txt");
/*如果try中的代码执行发生异常,直接执行catch中的代码会被执行,catch之后的代码会继续往下执行
* 如果不加try-catch,代码执行抛出异常后,后面的代码不会继续执行
*/
try
{
System.IO.File.Delete(@"F:\面向对象2.exe");
}
catch
{
Console.WriteLine("删除失败");
}
System.IO.File.Delete(@"F:\input.txt");
Console.ReadKey();
}
}
运行面向对象2.exe文件,当代码被编译时,输出结果为“删除失败”,但是output.txt和input.txt文件均成功被删除,面向对象2.exe文件未被删除。可见当执行try失败后,直接运行catch及catch后续的代码。
但是在上述代码执行时,我们并不知道异常的原因,采用下列代码可以弹出异常原因
try
{
System.IO.File.Delete(@"F:\面向对象2.exe");
}
catch(Exception error)
{
Console.WriteLine("删除失败,错误为{0}",error.Message);//可以显示异常原因
}
在catch()中加入Exception xx,可以在运行结果中弹出抛异常的原因,结果截图如下
不要随意地使用try catch,异常是一种“未考虑的情况”,尽量不要靠try catch来实现正常的逻辑,程序员应该要自身完善程序的逻辑性,避免出现异常。可以抓取某一类异常,例如
catch(FileNotFoundException ex)
{
Console.WriteLine("读取文件不存在,错误为{0}",ex.Message);
}
try finally,无论try中的语句有无成功执行,finally中的语句在最后都会被执行,可以用try catch... finally。
2018.08.07
新手C#异常的学习2018.08.07的更多相关文章
- 新手C#面向对象的学习2018.08.06
class Person//声明一个Person类 { //类中的声明与Main中不同,类中声明的是字段而不是函数. public string gender; public string name= ...
- 新手C#构造函数、继承、组合的学习2018.08.06/07
构造函数,是一种特殊的方法.主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同 ...
- 新手C#int.Parse、int.TryParse的学习2018.08.04
int.Parse()用于将字符串转换为32为int类型,但是在遇到非数字或者类似1.545这种小数的时候会报错,后来采用了int.TryParse,这个在转换后会判断是否可以正常转换,若不能,会返回 ...
- (转)新手C#SQL语句的学习2018.08.13
1.创建数据库(create) CREATE DATABASE database-name 2.删除数据库(drop) drop database dbname 3.备份数据库 --- 创建 备份数据 ...
- 新手C#SQLServer在程序里实现语句的学习2018.08.12
从C#中连接到SQL Server数据库,再通过C#编程实现SQL数据库的增删改查. ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据 ...
- 新手C#类、对象、字段、方法的学习2018.08.05
类:具有相似属性和方法的对象的集合,如“人”是个类. 对象(实例):对象是具体的看得见摸得着的,如“张三”是“人”这个类的对象.(new Person()开辟了堆空间中,=开辟了栈空间,变量P存放在该 ...
- 新手C#s.Split(),s.Substring(,)以及读取txt文件中的字符串的学习2018.08.05
s.split()用于字符串分割,具有多种重载方法,可以通过指定字符或字符串分割原字符串成为字符串数组. //s.Split()用于分割字符串为字符串数组,StringSplitOptions.Rem ...
- 新手C#string类常用函数的学习2018.08.04
ToLower()用于将字符串变为小写,注意字符串的不可变特性,需要重新赋值给另一个字符串变量. s = s.ToLower();//字符串具有不可变性,转换后需要重新赋值,不可仅有s.ToLower ...
- 新手C#参数类型ref、out、params的学习2018.08.04
ref用于传递参数时,将实参传递到函数中,是引用参数,在使用前必须被赋值.string类型也同样适用. static void Main(string[] args) { string a1,a2; ...
随机推荐
- phpstudy2017版本的nginx 支持laravel 5.X配置
之前做开发和学习一直用phpstudy的mysql服务,确实很方便,开箱即用.QQ群交流:697028234 现在分享一下最新版本的phpstudy2017 laravel环境配置. 最新版的phps ...
- iOS UILabel两端对齐的实现(可包括中英文/数字)
- (void)conversionCharacterInterval:(NSInteger)maxInteger current:(NSString *)currentString withLabe ...
- 利用Sonar定制自定义JS扫描规则(三)——SSLR JavaScript Toolkit 使用说明
在上一篇blog中讲了在sonar中如何新增自定义的JS规则,这里面比较难的地方是XPath语句的编写,而要编写正确的XPath语句,首先要拿到语法的AST,下面我们就来介绍如何使用SSLR Java ...
- cell 重用
1. 当单元格因滚屏而脱落表格可见区时,表格可以将其缓存到重用队列中. 用法:我们可标记单元格以备重用,然后根据需要从该队列中提取. 在分配新单元格时,必须检查重用单元格是否可用.如果表格对deque ...
- 解决Jenkins 中无法展示 HTML 样式的问题
问题 将本地的jmeter脚本部署到Jenkins上时,可以运行成功也可以在本地生成正确的HTML.但在Jenkins中查看HTML report时内容显示不出来. because the docum ...
- 中南林业科技大学第十一届程序设计大赛- I:背包问题
链接:https://www.nowcoder.com/acm/contest/124/I来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 131072K,其他语言26214 ...
- [团队项目]Scrum 项目1.0 (演说视频)
1.确定选题. 应用NABCD模型,分析你们初步选定的项目,充分说明你们选题的理由. 录制为演说视频,上传到视频网站,并把链接发到团队博客上. 截止日期:2016.5.6日晚10点 2.SCRUM 流 ...
- WF从入门到精通学习目录
WF从入门到精通(第一章):WF简介 WF从入门到精通(第二章):workflow运行时 WF从入门到精通(第三章):workflow实例 WF从入门到精通(第四章):活动及workflow类型介绍 ...
- MSMQ向远程服务器发送消息----错误总结
一:路径错误(Path)错误 如果向远程服务器发送消息,请使用格式名的形式,如: FormatName:Direct=TCP:121.0.0.1\\private$\\queueFormatName: ...
- 使用ffmpeg步骤(转)
av_register_all();//初始化ffmpeg库,如果系统里面的ffmpeg没配置好这里会出错 if (isNetwork) { //需要播放网络视频 avforma ...