C#异常处理
2015-07-23 09:09
651 查看
异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。
try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。
catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。
finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。
throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成
假设一个块将出现异常,一个方法使用 try 和 catch 关键字捕获异常。try/catch 块内的代码为受保护的代码,使用 try/catch 语法如下所示:
using System;
namespace ErrorHandlingApplication
{
class DivNumbers
{
int result;
DivNumbers()
{
result = 0;
}
public void division(int num1, int num2)
{
try
{
result = num1 / num2;
}
catch (DivideByZeroException e)
{
Console.WriteLine("Exception caught: {0}", e);
//throw e;
}
finally
{
Console.WriteLine("Result: {0}", result);
}
}
static void Main(string[] args)
{
DivNumbers d = new DivNumbers();
d.division(25, 0);
Console.ReadKey();
}
}
}
实例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static string[] eTypes = { "none","simple","index","nested index",};
static void Main(string[] args)
{
foreach (var item in eTypes)
{
try
{
Console.WriteLine("Main() try block reached.");
Console.WriteLine("ThrowException(\"{0}\") called.", eTypes);
}
catch (Exception e)
{
Console.WriteLine("Main() System.IndexOutOfRangeExeception catch" + "block reached Message:\n\"{0}\"", e.Message);
}
catch
{
Console.WriteLine("Main() general catch block reached.");
}
finally
{
Console.WriteLine("Main() finally block reached.");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。
catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。
finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。
throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成
假设一个块将出现异常,一个方法使用 try 和 catch 关键字捕获异常。try/catch 块内的代码为受保护的代码,使用 try/catch 语法如下所示:
try { // 引起异常的语句 } catch( ExceptionName e1 ) { // 错误处理代码 } catch( ExceptionName e2 ) { // 错误处理代码 } catch( ExceptionName eN ) { // 错误处理代码 } finally { // 要执行的语句 }
using System;
namespace ErrorHandlingApplication
{
class DivNumbers
{
int result;
DivNumbers()
{
result = 0;
}
public void division(int num1, int num2)
{
try
{
result = num1 / num2;
}
catch (DivideByZeroException e)
{
Console.WriteLine("Exception caught: {0}", e);
//throw e;
}
finally
{
Console.WriteLine("Result: {0}", result);
}
}
static void Main(string[] args)
{
DivNumbers d = new DivNumbers();
d.division(25, 0);
Console.ReadKey();
}
}
}
实例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static string[] eTypes = { "none","simple","index","nested index",};
static void Main(string[] args)
{
foreach (var item in eTypes)
{
try
{
Console.WriteLine("Main() try block reached.");
Console.WriteLine("ThrowException(\"{0}\") called.", eTypes);
}
catch (Exception e)
{
Console.WriteLine("Main() System.IndexOutOfRangeExeception catch" + "block reached Message:\n\"{0}\"", e.Message);
}
catch
{
Console.WriteLine("Main() general catch block reached.");
}
finally
{
Console.WriteLine("Main() finally block reached.");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}
相关文章推荐
- C#汉字转十六进制
- c# 读取文件流
- C#高级编程四十九天----队列
- C# Winform界面中的分隔线问题
- C#高级编程四十八天----列表
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 服务器故障诊断排查工具
- c#函数返回多个变量
- 容器使用笔记(Dictionary篇)
- c# DataTable 表中的某个值如何获取
- 【转】[C#List的Sort()、Find()、FindAll()、Exist()的使用方法举例
- C# combox不能输入的解决方法
- C#遍历系统所安装的打印机,使用WMI方式获取打印机的所有属性
- C# 正则表达式,提取字符串
- 用c#查询各快递物流信息
- C# 验证码生成(MVC和非MVC两种方式)
- c#导出excel
- C# - Abstract Classes
- C#计算float类型数据求和不精确问题
- C#缓存的一点想法及测试
- C# 基本知识纪录