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并做过对比,在 ...
随机推荐
- c# HashSet 列表去重
List<, , , }; HashSet<int> hs = new HashSet<int>(list); List<, , , }; HashSet<i ...
- Lucene.net 全文检索数据库
#define Search using Lucene.Net.Analysis; using Lucene.Net.Analysis.Tokenattributes; using Lucene.Ne ...
- NGUI图集字体
UIFont里使用Symbols来指定字体时用Sprite前缀和名字自动分配的工具,前段时间工作需要时写的,具体用法有空时再写. using UnityEngine; using UnityEdito ...
- 解决创建带有NameSpace的XML文件出现空白xmlns的问题
为了能够让用户自行部署ClickOnce应用程序,需要编写一个生成ClickOnce应用程序的ClickOnce专用安装程序setup.exe,而生成这个setup.exe的方法就是编写一个XML格式 ...
- Spring 开发第一步
经过今天上午的学习发现spring上手开发一个"hello world"真的非常简单. 开发环境搭建: 1.去spring官网下载spring-framework-3.2.11.R ...
- 智能卡操作系统COS概述
随着IC卡从简单的同步卡发展到异步卡,从简单的EPROM卡发展到内带微处理器的智能卡(又称CPU卡),对IC卡的各种要求越来越高.而卡本身所需要的各种管理工作也越来越复杂,因此就迫切地需要有一种工具来 ...
- mapreduce程序的按照key值从大到小降序排列
在近期的Hadoop的学习中,在学习mapreduce时遇到问题:让求所给数据的top10,们我们指导mapreduce中是有默认的排列机制的,是按照key的升序从大到小排列的 然而top10问题的求 ...
- (转) MySQL分区与传统的分库分表
传统的分库分表 原文:http://blog.csdn.net/kobejayandy/article/details/54799579 传统的分库分表都是通过应用层逻辑实现的,对于数据库层面来说,都 ...
- (转)MySQL优化系列
原文:http://blog.csdn.net/jack__frost/article/details/71194208 数据库,后端开发者必学,而且现在以MySQL居多.这个系列将系统化MySQL一 ...
- commons-pool2
转载请注明源出处:http://www.cnblogs.com/lighten/p/7375611.html 1.前言 本章介绍一下常用基础Jar包commons-pools2,最近使用到了thrif ...