C# 中的异常捕捉(try)和异常处理(catch)
2015-12-28 23:51
253 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。
为了捕捉异常,代码要放到一个 try 块中(try 是 C# 关键字)。代码运行时它会尝试执行 try 块内的所有语句。如果没有任何语句产生一个异常,这些语句将一个接一个运行,直到全部完成。然而,一旦出现异常,就会跳出 try 块,并进入一个 catch 处理程序中执行。
在try块后紧接着写一个或多个 catch 处理程序(catch 也是 C# 关键字),用它们处理任何发生的错误。每个 catch 处理程序都负责捕捉并处理一种特定类型的异常,你可以在一个 try 块后面写多个 catch 处理程序。try 块中的任何一个语句造成错误,“运行时”(runtime)都会生成并抛出一个异常。然后“运行时”将检查 try 块之后的 catch 处理程序,将控制权移交给一个匹配的处理程序。
catch 处理程序结束之后,程序将从处理程序之后的第一个语句继续执行。
下图是使用了 try 和 catch 的一个程序:
[csharp] view
plaincopy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TryAndCatch
{
class Program
{
static void Main(string[] args)
{
try
{
int a;
string b;
Console.WriteLine("请输入一个整数: ");
b = Console.ReadLine(); // ReadLine() 获取到的是 string 类型的数据
a = int.Parse(b); // int.Parse 方法将 string 类型转换 int 类型
}
catch (Exception ex) // 这是一个常规的 catch 处理程序,能捕捉一切异常
{
Console.WriteLine(ex);
}
}
}
}
由于 a 是 int 类型,所以要求输入的数据也要是 int 类型。此处输入 1.0,类型不符合,所以 try 块在此处会捕捉到一个 FornatException ( 格式异常 ),然后 catch 块会处理这个异常,在这里具体的做法就是输出错误信息。
FornatException 属于 Exception。
运行后结果如下图所示:
将 try 和 catch 注释掉后代码如下:
[csharp] view
plaincopy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TryAndCatch
{
class Program
{
static void Main(string[] args)
{
////try
////{
int a;
string b;
Console.WriteLine("请输入一个整数: ");
b = Console.ReadLine();
a = int.Parse(b);
////}
////catch (Exception ex)
////{
//// Console.WriteLine(ex);
////}
}
}
}
由于没有进行异常捕捉和异常处理,所以运行后结果如下:
为了捕捉异常,代码要放到一个 try 块中(try 是 C# 关键字)。代码运行时它会尝试执行 try 块内的所有语句。如果没有任何语句产生一个异常,这些语句将一个接一个运行,直到全部完成。然而,一旦出现异常,就会跳出 try 块,并进入一个 catch 处理程序中执行。
在try块后紧接着写一个或多个 catch 处理程序(catch 也是 C# 关键字),用它们处理任何发生的错误。每个 catch 处理程序都负责捕捉并处理一种特定类型的异常,你可以在一个 try 块后面写多个 catch 处理程序。try 块中的任何一个语句造成错误,“运行时”(runtime)都会生成并抛出一个异常。然后“运行时”将检查 try 块之后的 catch 处理程序,将控制权移交给一个匹配的处理程序。
catch 处理程序结束之后,程序将从处理程序之后的第一个语句继续执行。
下图是使用了 try 和 catch 的一个程序:
[csharp] view
plaincopy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TryAndCatch
{
class Program
{
static void Main(string[] args)
{
try
{
int a;
string b;
Console.WriteLine("请输入一个整数: ");
b = Console.ReadLine(); // ReadLine() 获取到的是 string 类型的数据
a = int.Parse(b); // int.Parse 方法将 string 类型转换 int 类型
}
catch (Exception ex) // 这是一个常规的 catch 处理程序,能捕捉一切异常
{
Console.WriteLine(ex);
}
}
}
}
由于 a 是 int 类型,所以要求输入的数据也要是 int 类型。此处输入 1.0,类型不符合,所以 try 块在此处会捕捉到一个 FornatException ( 格式异常 ),然后 catch 块会处理这个异常,在这里具体的做法就是输出错误信息。
FornatException 属于 Exception。
运行后结果如下图所示:
将 try 和 catch 注释掉后代码如下:
[csharp] view
plaincopy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TryAndCatch
{
class Program
{
static void Main(string[] args)
{
////try
////{
int a;
string b;
Console.WriteLine("请输入一个整数: ");
b = Console.ReadLine();
a = int.Parse(b);
////}
////catch (Exception ex)
////{
//// Console.WriteLine(ex);
////}
}
}
}
由于没有进行异常捕捉和异常处理,所以运行后结果如下:
相关文章推荐
- C# 空气版坦克大战
- C#实现对本地文件的访问,获取本地文件的地址
- C#实现关闭某个指定程序
- C#如何读写和创建INI文件
- c#访问级别约束的问题
- C# Winform软件多语言(汉语、英语。。。)界面的切换,低耦合
- C#类中属性的定义
- C#简单实现动态数据生成Word文档并保存
- 【C#】向导式窗体
- C#学习笔记009-集合练习
- floyd最短路径算法C#版
- C#关闭word时,提示“此文件正由另一个应用程序或用户使用” normal.dot
- C#保留字
- c# 获取IP地址
- VS 2015相当不错的功能:C#交互窗口
- C# 委托和事件
- c#中的二进制序列化
- C# 本地储存文本的几种方式
- C#中MD5加密
- C#中Picturebox的使用