C#异常捕捉处理
来源:互联网 发布:程序员没前途 编辑:程序博客网 时间:2024/06/05 01:51
try...catch...finally异常捕捉处理
1.异常捕捉处理
try{//执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行;否则不会执行catch里面的内容;finally肯定会执行;如果有一行代码发生了异常,那么try块中剩余的代码就不会执行了} catch{//除非try里面执行代码发生了异常,否则这里的代码不会执行;如果catch块的参数不写,表示发生任何异常都执行这个catch块} finally{//不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally }注意:
1/ 不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally;
但是若try catch里执行了return,finally执行以后就真的return了,不会再走try catch finally外下面的代码。
2/ 其中catch块可以有0或者多个,finally可以有0或者1个
但是如果没有catch块,必须有finally块,没有finally块,必须有catch块,catch块和finally块可以同时存在。
如:
1/ 不加return
class Program { static void Main(string[] args) { try { int[] myArray = {1, 2, 3, 4}; Console.WriteLine("这里是try里面执行的代码"); int myEle = myArray[4]; } catch//当我们不写catch的参数的时候,那么这个catch会捕捉出现的任何异常信息 { Console.WriteLine("您访问数组的时候,下标越界了"); } finally { Console.WriteLine("这里是finally里面执行的代码"); } Console.WriteLine("test"); Console.ReadKey(); } }结果:
这里是try里面执行的代码您访问数组的时候,下标越界了这里是finally里面执行的代码test2/ 加了return
class Program { static void Main(string[] args) { try { int[] myArray = {1, 2, 3, 4}; Console.WriteLine("这里是try里面执行的代码"); return; int myEle = myArray[4]; } catch//当我们不写catch的参数的时候,那么这个catch会捕捉出现的任何异常信息 { Console.WriteLine("您访问数组的时候,下标越界了"); } finally { Console.WriteLine("这里是finally里面执行的代码"); } Console.WriteLine("test"); Console.ReadKey(); } }结果:
这里是try里面执行的代码这里是finally里面执行的代码
不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally;
但是若try catch里执行了return,finally执行以后就真的return了,不会再走try catch finally外下面的代码。
2.异常类型
可以使用异常语句catch( Exception ex)获取异常,然后通过ex.GetType()得到异常的类型,代码如下所示:
try{ int b = 0; int a = 100 / b;}catch( Exception ex){ Console.WriteLine("错误类型:"+ex.GetType().ToString());}
ArgumentNullException 一个空参数传递给方法,该方法不能接受该参数 ArgumentOutOfRangeException 参数值超出范围 ArithmeticException 出现算术上溢或者下溢 ArrayTypeMismatchException 试图在数组中存储错误类型的对象 BadImageFormatException 图形的格式错误 DivideByZeroException 除零异常 DllNotFoundException 找不到引用的DLL FormatException 参数格式错误 IndexOutOfRangeException 数组索引超出范围 InvalidCastException 使用无效的类 InvalidOperationException 方法的调用时间错误 NotSupportedException 调用的方法在类中没有实现 NullReferenceException 试图使用一个未分配的引用 OutOfMemoryException 内存空间不够 StackOverflowException 堆栈溢出
e.g. 有时候异常捕捉有些妙用,如demo from siki:
class Program { static void Main(string[] args) { int num1 = 0, num2 = 0; Console.WriteLine("请输入第一个数字"); while (true) { try { num1 = Convert.ToInt32(Console.ReadLine());//在try块中,如果有一行代码发生了异常,那么try块中剩余的代码就不会执行了 break; } catch { Console.WriteLine("您输入的不是一个整数,请重新输入"); } //break;//把break放在这里的话,不管发布发生异常都会执行,因为try对异常进行了处理 } Console.WriteLine("请输入第二个数字"); while (true) { try { num2 = Convert.ToInt32(Console.ReadLine());//在try块中,如果有一行代码发生了异常,那么try块中剩余的代码就不会执行了 break; } catch { Console.WriteLine("您输入的不是一个整数,请重新输入"); } //break;//把break放在这里的话,不管发布发生异常都会执行,因为try对异常进行了处理 } int sum = num1 + num2; Console.WriteLine(sum); Console.ReadKey(); }要求用户输入两个数字求和,用户输入不是数字则发生异常,则捕捉到了于是提示不是整数需要重输入;输入是数字则不会发生异常break跳出循环。有点妙。
阅读全文
0 0
- C#异常捕捉处理
- 捕捉C#全局异常的事件处理
- C# 多线程异常捕捉。
- C#异常捕捉
- 异常处理(异常捕捉)
- android 程序异常捕捉处理
- android异常捕捉处理-CrashHandler
- java异常捕捉及处理
- C# 中的异常捕捉(try)和异常处理(catch)
- C# 中的异常捕捉(try)和异常处理(catch)
- 系统异常捕捉处理设计文档
- android开发之程序异常捕捉处理
- python捕捉对象(异常处理)
- delphi 捕捉屏幕异常特殊处理
- java异常处理机制:抛出异常,捕捉异常
- C# 错误统一捕捉处理新方式
- C# 错误统一捕捉处理新方式
- python异常处理实例教程(捕捉异常、错误)
- SpringBoot+Mybatis+druid(基于maven)
- c++ 11 5
- Java Web项目中使用Freemarker生成Word文档
- 【项目记录】山东大学场馆管理系统之——场馆申请管理
- echarts 简单使用
- C#异常捕捉处理
- angular学习之——ng-show/ng-hide与ng-if的区
- 2017 计蒜之道 初赛 第四场 (计蒜课比赛)第一题
- 巧用方式提升查询效率
- Tomcat中JVM内存溢出问题(centos)
- 利用jq生成二维码图片
- 学习java的部分
- Submit常用快捷键
- idea 基本命令