【基础】C#异常处理的总结
一、异常处理的理解?
异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。
因此处理这种错误,就称为异常处理。
二、异常处理如何操作?
C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。
1、try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。
2、catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。
3、finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。
例如如果你打开一个文件,不管是否出现异常文件都要被关闭。
4、throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。
语法示例:
try
{
// 引起异常的语句
}
catch( ExceptionName e1 )
{
// 错误处理代码
}
catch( ExceptionName e2 )
{
// 错误处理代码
}
catch( ExceptionName eN )
{
// 错误处理代码
}
finally
{
// 要执行的语句
}
三、C#中的异常类
C# 异常是使用类来表示的。C# 中的异常类主要是直接或间接地派生于System.Exception
(1).由System.SystemException派生的异常类型:
System.AccessViolationException在试图读写受保护内存时引发的异常。
System.ArgumentException在向方法提供的其中一个参数无效时引发的异常。
System.Collections.Generic.KeyNotFoundException指定用于访问集合中元素的键与集合中的任何键都不匹配时所引发的异常。
System.IndexOutOfRangeException访问数组时,因元素索引超出数组边界而引发的异常。
System.InvalidCastException因无效类型转换或显示转换引发的异常。
System.InvalidOperationException当方法调用对于对象的当前状态无效时引发的异常。
System.InvalidProgramException当程序包含无效Microsoft中间语言(MSIL)或元数据时引发的异常,这通常表示生成程序的编译器中有bug。
System.IO.IOException发生I/O错误时引发的异常。
System.NotImplementedException在无法实现请求的方法或操作时引发的异常。
System.NullReferenceException尝试对空对象引用进行操作时引发的异常。
System.OutOfMemoryException没有足够的内存继续执行程序时引发的异常。
System.StackOverflowException挂起的方法调用过多而导致执行堆栈溢出时引发的异常。
(2).由System.ArgumentException派生的异常类型:
System.ArgumentNullException当将空引用传递给不接受它作为有效参数的方法时引发的异常。
System.ArgumentOutOfRangeException当参数值超出调用的方法所定义的允许取值范围时引发的异常。
(3).由System.ArithmeticException派生的异常类型:
System.DivideByZeroException试图用零除整数值或十进制数值时引发的异常。
System.NotFiniteNumberException当浮点值为正无穷大、负无穷大或非数字(NaN)时引发的异常。
System.OverflowException在选中的上下文中所进行的算数运算、类型转换或转换操作导致溢出时引发的异常。
(4).由System.IOException派生的异常类型:
System.IO.DirectoryNotFoundException当找不到文件或目录的一部分时所引发的异常。
System.IO.DriveNotFoundException当尝试访问的驱动器或共享不可用时引发的异常。
System.IO.EndOfStreamException读操作试图超出流的末尾时引发的异常。
System.IO.FileLoadException当找到托管程序却不能加载它时引发的异常。
System.IO.FileNotFoundException试图访问磁盘上不存在的文件失败时引发的异常。
System.IO.PathTooLongException当路径名或文件名超过系统定义的最大长度时引发的异常。
(5).其他常用异常类型:
ArrayTypeMismatchException试图在数组中存储错误类型的对象。
BadImageFormatException图形的格式错误。
DivideByZeroException除零异常。
DllNotFoundException找不到引用的dll。
FormatException参数格式错误。
MethodAccessException试图访问私有或者受保护的方法。
MissingMemberException访问一个无效版本的dll。
NotSupportedException调用的方法在类中没有实现。
PlatformNotSupportedException平台不支持某个特定属性时抛出该错误。
四、示例
class MyExceptionTest
{
static double SafeDivision(double x, double y)
{
if (y == 0)
throw new System.DivideByZeroException();
return x / y;
}
static void Main()
{
double a = 98, b = 0;
double result = 0;
try
{
result = SafeDivision(a, b);
Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
}
catch (DivideByZeroException e)
{
Console.WriteLine("Attempted divide by zero.");
}
}
}
公众号原文
【基础】C#异常处理的总结相关推荐
- python基础之异常处理
python基础之异常处理 参考文章: (1)python基础之异常处理 (2)https://www.cnblogs.com/zhangyux/p/6108026.html (3)https://w ...
- [C++基础]039_C++异常处理初级出门+中级进阶
[C++基础]039_C++异常处理初级出门+中级进阶 参考文章: (1)[C++基础]039_C++异常处理初级出门+中级进阶 (2)https://www.cnblogs.com/alephsou ...
- Python基础:异常处理
Python基础:异常处理 一,学习的内容 Python 异常处理 异常就是运行期检测到的错误.计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序 ...
- 刻意练习:Python基础 -- Task08. 异常处理
背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...
- expec不管异常 try_python3基础之异常处理(通俗易懂)
什么是异常? 异常顾名思义就是不正常的情况,比如说用一个数去除以0,就是一个不正常的情况: 例子中用1除以0,结果出现了异常ZeroDivisionError.出现异常后程序就崩溃了,对于用户而言最不 ...
- 【Java基础】异常处理与输入输出流
finally中的代码执行时机 try{}语句中含有return,那么finally还会执行吗?如果会,那么是什么时候执行(return前还是return后) 在Java的异常处理中,不论什么情形,f ...
- Python基础06-Python异常处理
Python异常处理 异常处理概述 异常处理实战 异常处理,如果异常不处理,比如爬虫爬到一半,变奔溃了 ''' Python异常处理 ''' try:print("My")prin ...
- python基础语法-异常处理
python中的异常处理 类似于java 开发中很常用 异常处理的好处 大大减少了由于异常程序崩溃的发生. 三个基本语句 try:在try语句后放入可能出现问题的代码,没有问题正常执行 except: ...
- python基础(part14)--异常处理
鄙人学习笔记 开发工具:Spyder 文章目录 异常处理 异常 异常处理 举个例子1 举个例子2 raise语句 案例 自定义异常 案例 异常处理 我们先以一个例子为开头 代码: 控制台输入5,则正常 ...
- halcon/c++接口基础 之异常处理
关于运行错误,HALCON/C++默认打印错误信息并且终止程序.然而在某些应用中,放宽这个法则可能更有用.比如,如果一个应用要求用户交互式地指定一个图像文件读取,如果因为用户不能拼错文件名而终止程序的 ...
最新文章
- Effective STL 为包含指针的关联容器指定比较类型
- 7个珍藏多年的网站,颠覆你的想象,值得收藏起来!
- 【问题收录】Ubuntu(14.04)那些我遇到的各种事
- Linux学习中压缩包格式有哪些?
- ab压力测试_CentOS安装压力测试工具ApacheBench(ab)
- C++ class实现顺序队列(完整代码)
- Codeforces Good Bye 2015 A. New Year and Days 水题
- SpringCloud微框架系列整体模块梳理
- cloud_config学习_1
- 基于JAVA SSM框架的酒店客房管理系统设计
- 在大多数情况下病毒入侵计算机系统以后,网络支付与安全练习题库
- 基模高斯光束matlab_matlab 计算高斯光束的束腰 - 物理 - 小木虫 - 学术 科研 互动社区...
- selenium(三)之webDriver与浏览器版本问题
- 操作系统简介及编程语言
- CAN总线和CANOpen协议栈总结
- 2022年全网最新 Windows10 安装 JDK1.8
- 移动硬盘安装ubuntu(UEFI)——遇到的问题以及解决方法
- Vue实战篇三十三:实现新闻的浏览历史
- kali中如何更新python_怎么在线更新kali linux
- python模拟点击屏幕ios_python模拟点击在ios中实现的实例讲解
热门文章
- uboot 与系统内核中 MTD分区的关系
- 日志文件在VS中输出为乱码问题
- 学习笔记(45):Python实战编程-键盘事件
- strncpy与strcpy的区别与注意事项
- 前缀++ 后缀++ 运算符重载
- mysql查询的时候会涉及到锁_Mysql 查询 锁的问题?
- How to use QueryPerformanceCounter? (c++,不使用 .Net)
- IOS https抓包及10.3.3版本证书不生效问题解决
- UVa 11324 最大团(强连通分量缩点)
- 总结一年来的前端学习心得