c#基础学习(0719)之异常处理
异常处理的一般代码模式
try
{
//可能发生异常的代码
//当try中某行代码发生异常后,从该行代码开始,后面的代码都不会继续执行,
//程序直接跳转到catch块中进行执行
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);//可以看到异常的原因
//对异常的处理
throw;//继续向上抛出异常
}
finally
{
//不管是否发生异常都会执行
}
atch块的几种写法
try
{
int n = , m = ;
int r = n / m;
Console.WriteLine(r);
}
////第一种:这种写法可以捕获try块中的所有异常
//catch
//{
// Console.WriteLine("发生一场了!");
// //throw;
//}
////第二种:
//catch(Exception ex)
//{
// Console.WriteLine("发生异常了!");
// Console.WriteLine(ex.Message);//发生异常的消息
// Console.WriteLine(ex.Source);//那个对象中发生异常
// Console.WriteLine(ex.StackTrace);//异常相关信息(那个位置第几行第几列)
//}
//第三种:对不同的异常,使用不同的方式开处理(使用多个不同的catch块来捕获异常)
catch(NullReferenceException e)
{
//空指针异常
Console.WriteLine("空指针异常:{0}",e.Message);
}
catch(DivideByZeroException e)
{
//除数为0的异常
Console.WriteLine("除数为0的异常,详细信息:{0}",e.StackTrace);
}
catch(ArgumentException e)
{
//参数异常
Console.WriteLine("参数异常,详细信息:{0}",e.StackTrace);
}
catch(Exception e)
{
//捕获其余所有的异常
Console.WriteLine(e.StackTrace);
}
finally
{
Console.WriteLine("finally中的代码!!");
}
Console.ReadKey();
手动抛出异常及使用throw继续向上抛出异常
static void Main(string[] args)
{
#region 手动抛出异常
//while (true)
//{
// //尽量使用逻辑判断来避免异常处理代码
// try
// {
// Console.WriteLine("请输入一个人名");
// string name = Console.ReadLine();
// if (name == "超哥")
// {
// //手动抛出异常
// throw new Exception("姓名不合法!");
// }
// else
// {
// Console.WriteLine("姓名合法:{0}", name);
// }
// }
// catch (Exception ex)
// {
// Console.WriteLine("发生异常了!!");
// Console.WriteLine(ex.Message);
// Console.WriteLine(ex.StackTrace);
// }
//}
#endregion #region 异常
M2();
Console.ReadKey();
#endregion
}
static void M2()
{
Console.WriteLine("===========");
Console.WriteLine("===========");
try
{
M1();
}
catch (Exception)
{
Console.WriteLine("M1方法发生异常了!");
throw;
}
Console.WriteLine("===========");
Console.WriteLine("===========");
}
static void M1()
{
try
{
int n = , m = ;
int r = n / m;
Console.WriteLine("结果是:{0}", r);
}
catch (Exception)
{
Console.WriteLine("捕获了该异常并且已经做了相观的处理!");
//再catch中使用throw;语句,并且这种用法只能用在catch块中
//throw:表示将当前异常继续向上抛出。
throw;
}
}
c#基础学习(0719)之异常处理的更多相关文章
- Python入门基础学习(文件与异常处理)
Python基础学习笔记(七) 捕获异常的语法格式: 文件的基本操作: 打开文件 读.写文件 关闭文件 read方法 --读取文件: open函数的第一个参数是要打开的文件名(文件名区分大小写) 如果 ...
- C#/.NET 基础学习
初识C# C#是微软公司发布的面向对象的.运行于.NET Framework之上的高级程序设计语言.与Java有着明显不同,借鉴Delphi的特点,与COM(组件对象模型)直接集成,是微软公司 .NE ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- JavaScript 基础学习1-day14
JavaScript 基础学习1 知识预览JavaScript概述二 JavaScript的基础三 JavaScript的对象BOM对象DOM对象实例练习js扩展 JavaScript概述 JavaS ...
- 转载-java基础学习汇总
共2页: 1 2 下一页 Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3 Java基础学习总结——Java对象的序列化和 ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- 【学习笔记】JavaScript的基础学习
[学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- 19年最新 Python0基础学习书籍推荐(内涵PDF地址以及书籍源码)
去年看过一篇文章,是关于18年的最适合0基础学习的书籍,今年,最新的书籍也已经统计出来.书籍的PDF太过于难找,所以很多PDF都找不到. 仅仅只能找到英文版PDF 本文章统计了18.19并做过对比,在 ...
随机推荐
- 【mysql】使用Navicat连接数据库
1 连接数据库 点击左下角测试一下 提示 输入 select host,user,plugin,authentication_string from mysql.user; 查看用户信息 注意这里我们 ...
- Ubuntu18.04 - 返回到Gnome经典桌面!
Ubuntu18.04默认的桌面是定制版的Gnome,说实话,真的不喜欢,还是喜欢Gnome的经典桌面,那么如何进入呢?执行下面命令,执行完毕后注销,选择一下就可以了! sudo apt-get in ...
- Lunix git stash clear 或者 git stash drop后恢复的方法
首先输入 git fsck --lost-found 会看到 一条一条的记录 这里的"dangling commit ..."你可以理解为记录的是你stash的id(经测试,该id ...
- [Swift实际操作]七、常见概念-(5)使用NSString对字符串进行各种操作
本文将为你演示字符串NSString的使用,NS是Cocoa类对象类型的前缀,来源于乔布斯建立的另一家公司--NeXT NSString的使用方法,和Swift语言中的String有很多相似之处.首先 ...
- python实战——网络爬虫
学习网络爬虫的目的: 1,可以私人定制一个搜索引擎,可以深层次的了解搜索引擎的工作原理. 2,大数据时代,要进行数据分析,首先要有数据源,学习爬虫,可以让我们获取更多的数据. 3,从业人员可以可好的利 ...
- Redis 的 Sentinel
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服 ...
- JavaScript里的Date 对象属性及对象方法--实现简单的日历
上网搜索"js 日历插件"就会出来各种效果的功能丰富的日历插件,很多都可以下载源码,然后根据各自的需求对源码进行修改就可以直接用了. 但今天讲的不是如何使用这些插件,而是讲如何实现 ...
- python3中文件操作及编码
#之前一直没明白文件处理中的w和wb的区别到底是什么,#在看过视频后才知道,原来在linux里面是没有区别的,#但是在windows里面就能够看出区别来了#下面来个例子: with open(&quo ...
- express+nodemon 修改后浏览器自动刷新
添加nodemon模块 cnpm install --save nodemon 根目录添加文件 nodemon.json { "restartable": "rs&quo ...
- Linux终端复用工具 tmux
简介 Terminal Multiplexer (From WIKIPEDIA) - A terminal multiplexer is a software application that can ...