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并做过对比,在 ...
随机推荐
- Dalsa线扫相机配置-一台工控机同时连接多个GigE相机
如图,我强悍的工控机,有六个网口. 实际用的时候连了多台相机,为了偷懒我就把六个网口的地址分别设为192.168.0.1~192.168.0.6,以为相机的IP只要设在192.168.0这个网段然后随 ...
- [调试]VS2013调试时提示“运行时当前拒绝计算表达式的值”
VS2013 下单元测试调试时遇到的问题,以前倒从未遇到过. 中文关键字在百度和谷歌中搜索均无果. Google 下搜索 “The runtime has refused to evaluate th ...
- Microsoft.Web.Administration操作IIS7时的权限设置
在用Microsoft.Web.Administration操作IIS7时,你可能会遇到如下权限错误: 文件名: redirection.config错误: 由于权限不足而无法读取配置文件 如下图: ...
- 一个基于ASP.NET(C#)的ACCESS数据库操作类
using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...
- SQL查询和替换含有回车,空格,TAB,等
---如下是查询语句 --查询名称有退格键 ),item_name) go --查询名称有制表符tab ),item_name) go --查询名称有换行 ),item_name) go --查询名称 ...
- 修改tomcat7编码问题(重定向等)
修改tomcat默认编码格式: 修改tomcat下的conf/server.xml文件,找到如下代码: <Connector port="8080" protocol=&qu ...
- jzoj5913
這道題我們可以套路的設置f[i]為當前節點為根的滿足條件方案數,然後枚舉根,計算必須包含當前根的方案 但是似乎很難計算 所以我們可以搞一個前綴和,將聯通塊的最大數和最小數相減<=k的方案和< ...
- Sort-242. Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...
- day57作业(包含data内容)
day57作业 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&quo ...
- UML入门 之 交互图 -- 时序图 协作图详解
作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131 动态图概念 : 从静态图中抽取瞬间值的变化描 ...