功能说明:在此例中,try 块包含对可能导致异常的ProcessString()方法的调用.catch子句包含仅在屏幕上显示消息的异常处理程序,当从ProcessString内部调用throw语句时,系统查找Catch语句并显示Exception caught消息.
class Try_Test1
{
static void processString(string s)
{
if (s == null)
{
throw new ArgumentNullException();
}
}
static void Main()
{
try
{
string s = null;
processString(s);
}
catch (Exception e)
{
Console.WriteLine("第二个异常被捕获{0}",e);
}
Console.ReadKey();
}
}
此例使用了两个catch语句,最先出现的是最特定的异常被捕获.
class Try_Test2
{
static void processString(string s)
{
if (s == null)
{
throw new ArgumentNullException();
}
}
static void Main()
{
try
{
string s = null;
processString(s);
}
catch (ArgumentNullException e)
{
Console.WriteLine("第一个异常被获{0}.", e);
}
catch (Exception e)
{
Console.WriteLine("第二个异常被捕获{0}",e);
}
Console.ReadKey();
}
}
//异常处理语句——try-finally使用
//功能说明:在此例中,有一个导致异常的效转换语句,收到一条运行时的错误信息时,Finally语句块还是会执行.
public class Finally_Test1
{
static void Main()
{
int i = 123;
string s = "string test";
object o = s;
try
{
i = (int)o; //转换无效
}
catch (Exception e)
{
Console.WriteLine("转换无效");
}
finally
{
Console.WriteLine("i={0}", i);//但是finally还是最终会执行。
}
Console.ReadKey();
}