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并做过对比,在 ...
随机推荐
- 前端项目打包工具weexpack的安装
最下面是本人安装时候的系统环境,本篇文章只限于参考,不一定非得是这样,原因你懂得. 打包的过程中出现的问题 1.执行到weexpack run android的时候,到了resolving class ...
- .Net Core 自定义配置源从配置中心读取配置
配置,几乎所有的应用程序都离不开它..Net Framework时代我们使用App.config.Web.config,到了.Net Core的时代我们使用appsettings.json,这些我们再 ...
- .NET Core 运行时标识符 (RID) 目录
RID 是什么? RID 是运行时标识符的缩写. RID 用于标识其中将运行应用程序或资产(即程序集)的目标操作系统. 其外观类似如下:“ubuntu.14.04-x64”.“win7-x64”.“o ...
- 一步一步学习Swift之(二):好玩的工具playground与swfit基础语法
playground好于在于能一边写代码一边看到输出的常量变量的值.不需要运行模拟器. 我们来试一下该工具的用法. 打开xcode6开发工具,选择Get started with a playgrou ...
- js:实现自定义事件对象接口
网易2017内推笔试题 要求: 请实现下面的自定义事件Event对象的接口,功能见注释(测试1) 该Event对象的接口需要能被其他对象拓展复用(测试2) //测试1 Event.on('test', ...
- day 100天 VUE 父子传值,单页面.
一 .静态资源导入方法 启动服务 npm run serve <template> <div id ="app"> <h3>{{msg}}& ...
- 三个分段的.tar.gz文件,合并并解压
1.合并使用spilt分割的文件 # cat sxrt5.0.dvd1.tar.gzaa sxrt5.0.dvd1.tar.gzab sxrt5.0.dvd1.tar.gzac >>sxr ...
- CF 798B 渣渣题
题目链接:http://codeforces.com/contest/798/problem/B 此题是我打河工大校赛前一晚熬夜打CF时硬肛过去的B题,今天补题时,偶然看到dalao的代码,ORZ,s ...
- 关于rpm的命令
我是从这里学的:https://www.cnblogs.com/picaso/archive/2012/07/02/2573748.html 软件的安装时操作系统管理的基础,与Windows不同,Li ...
- (转)ReentrantLock可重入锁的使用场景
原文: http://my.oschina.net/noahxiao/blog/101558