C# 异常处理
来源:互联网 发布:arm linux 开机启动 编辑:程序博客网 时间:2024/06/05 19:22
异常是在程序执行期间出现的问题。C#中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。
异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C#异常处理时建立在四个关键词之上的:try、catch、finally、和throw。
-try:一个try块标识了一个将被激活的特定的异常代码块。后跟一个或多个catch块。
-catch:程序通过异常处理程序捕获异常。catch关键字表示异常的捕获。
-finally:finally块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果打开一个文件夹,不管是否出现异常文件都要关闭。
-throw:当问题出现时,程序抛出一个异常。使用throw关键字来完成。
C#中的异常类
C#异常是使用类来表示的。C#中的异常类主要是直接或间接地派生于System.Exception类。
异常处理
C#以try和catch块的形式提供了一种结构化的异常处理方案。使这些块,把核心成语语句与错误处理语句分离开。
这些错误处理块是使用try、catch、和finally关键字实现的。下面是一个当除以零时抛出异常的实例:
//C#异常处理语法using System;namespace ErrorHandlingApplication{ class DivNumbers { int result; DivNumbers() { result = 0; } public void disvision(int num1,int num2) { //异常处理是对程序运行时出现特殊情况的一种响应 try { //会出现异常的代码块 result = num1/num2; } catch (DivideByZeroException e) { //捕获出现的异常 Console.WriteLine("Exception caught:{0}",e); } finally { //无论是否抛出异常都会执行finally语句块 Console.WriteLine("Result:{0}",result); } } static void Main(string[] args) { DivNumbers d = new DivNumbers(); d.disvision(25,0); Console.ReadKey(); }
创建用户自定义异常
我们也可以自定义自己的异常。用户自定义的异常类是派生自ApplicationException类。
下面的程序演示了这点:
//C#创建用户自定义异常using System;namespace UserDefinedException{ class TestTemperature { static void Mian(string[] args) { Temperature tem = new Temperature(); try { tem.showTemp(); } catch(TempIsZeroException e) { Console.WriteLine("TempIsZeroException:{0}",e.Message); } Console.ReadKey(); } } public class TempIsZeroException:ApplicationException { public TempIsZeroException(string message):base(message) { } } public class Temperature { int temperature = 0; public void showTemp() { if (temperature == 0) { throw(new TempIsZeroException("Zero Temperature found")); } else { Console.WriteLine("Temperature:{0}",temperature); } } }}
阅读全文
0 0
- C# -- 异常和异常处理
- 关于C#异常处理!
- C#的异常处理
- C# 异常处理
- c# 异常处理
- ----------------------C#异常处理 -------------------------------
- C#异常处理
- C#异常处理
- C#异常处理
- C#异常处理
- C# 的异常处理
- C# 异常处理
- C#中的异常处理
- C#异常处理机制
- 初探C# 异常处理
- c#异常处理
- 初探C# 异常处理
- C#异常处理
- linux下网络丢包问题处理--overruns不断增加
- 欢迎使用CSDN-markdown编辑器
- Linux网络配置
- 搭建SVN服务器详细教程
- MySQL主从复制
- C# 异常处理
- DnCNN读书笔记
- Check failed: ShapeEquals(proto) shape mismatch (reshape not set)
- 持久化用户操作
- python-lambda
- Java面向对象习题
- Android中系统状态栏的隐藏和显示
- git 代码到本地的方式
- arcgis engine入门体会(一)