异常处理的一般代码模式

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)之异常处理的更多相关文章

  1. Python入门基础学习(文件与异常处理)

    Python基础学习笔记(七) 捕获异常的语法格式: 文件的基本操作: 打开文件 读.写文件 关闭文件 read方法 --读取文件: open函数的第一个参数是要打开的文件名(文件名区分大小写) 如果 ...

  2. C#/.NET 基础学习

    初识C# C#是微软公司发布的面向对象的.运行于.NET Framework之上的高级程序设计语言.与Java有着明显不同,借鉴Delphi的特点,与COM(组件对象模型)直接集成,是微软公司 .NE ...

  3. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  4. JavaScript 基础学习1-day14

    JavaScript 基础学习1 知识预览JavaScript概述二 JavaScript的基础三 JavaScript的对象BOM对象DOM对象实例练习js扩展 JavaScript概述 JavaS ...

  5. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  6. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  7. 【学习笔记】JavaScript的基础学习

    [学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...

  8. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  9. 19年最新 Python0基础学习书籍推荐(内涵PDF地址以及书籍源码)

    去年看过一篇文章,是关于18年的最适合0基础学习的书籍,今年,最新的书籍也已经统计出来.书籍的PDF太过于难找,所以很多PDF都找不到. 仅仅只能找到英文版PDF 本文章统计了18.19并做过对比,在 ...

随机推荐

  1. js实现回车登陆

    2018-11-15 $(document).keydown(function (event) { if (event.keyCode == 13) { $("#LoginBtn" ...

  2. 403 - 禁止访问: 访问被拒绝(IIS)

    错误如下: 解决方法: 1,点击当前网站主页,选择默认文档 2,添加网站的起始页,我这里是main.htm

  3. c# 将一个长耗时任务改成task

    public Task<ObservableCollection<WaterFallDataSource2>> InitalrenderSourceandBrush2(int ...

  4. JEECG(二) JEECG框架下调用webservice java springmvc maven 调用 webservice

    JEECG系列教程二 如何在JEECG框架下使用webservice 本文所使用的webservice是c#开发的 其实无论是什么语言开发的webservice用法都一样 java springmvc ...

  5. 【转】4G18的低成本NA玩法

    首先是要再次强调一次,4G18的缸径是76MM,冲程是87.5MM.属于典型的长冲程低转发动机! 这种设计的优点是比较适合市区走停的工作状况,省油. 如果要针对改装方案而言因为这种低转时便可输出大扭矩 ...

  6. MySQL中需要注意的几点

    几个常用的命令: select  database(); #查看当前所在的数据库. select  user();#查看当前登录的用户 show global variables like " ...

  7. Linux零碎知识

    ln -s用法: 创建软连接,命令如下: ln -s / /home/good/linkname ln的链接分软链接和硬链接两种: .软链接就是:“ln –s 源文件 目标文件”,只会在选定的位置上生 ...

  8. zookeeper基本操作

    理解Zookeeper的一种方法是将他视为一个提供高可用性的文件系统.它没有文件和目录,但是有一个统一概念的节点,叫做znode,作为数据以及其他znode的容器.znode来自于一个层次级的命名空间 ...

  9. redis cluster 添加 删除 重分配 节点

    redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢.  一,redis cluster命令 //集群(cluster) CLUSTER INFO 打印集群的信 ...

  10. SpringMVC整合kaptcha(验证码功能)

    一.依赖 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha& ...