异常 处理
using System;
![]()
namespace ConsoleApplication2
![]()
![]()
{
![]()
/**//// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
![]()
{
![]()
static string[] eTypes =
{ "none", "simple", "index", "nested index" };
[STAThread]
static void Main(string[] args)
![]()
{
foreach (string eType in eTypes)
![]()
{
try
![]()
{
Console.WriteLine("Main() try block reached.");
![]()
Console.WriteLine("ThrowException(\"
{0}\") called.", eType);
ThrowException(eType);
Console.WriteLine("Main() try block continues.");
}
catch (System.IndexOutOfRangeException e)
![]()
{
Console.WriteLine("Main() System.IndexOutOfRangeException catch " +
![]()
" block reched.Message:\n\"
{0}\"", e.Message);
}
catch
![]()
{
Console.WriteLine("Main() general catch block reached.");
}
finally
![]()
{
Console.WriteLine("Main() finally block reached.");
}
Console.WriteLine();
}
}
![]()
static void ThrowException(string exceptionType)
![]()
{
![]()
Console.Write("ThrowException(\"
{0}\")reached.", exceptionType);
switch (exceptionType)
![]()
{
case "none":
Console.WriteLine("Not throwing an exception.");
break;
case "simple":
Console.WriteLine("Throwing System.Exception.");
throw (new System.Exception());
break;
case "index":
Console.WriteLine("Throwing System.IndexOutOfRangeexception.");
eTypes[4] = "error";
break;
case "nested index":
try
![]()
{
Console.WriteLine("ThrowException(\"nested index\"):" + "try block reached.");
Console.WriteLine("ThrowException(\"index\")called.");
ThrowException("index");
}
catch
![]()
{
Console.WriteLine("ThrowException(\"nested index\")general" + " catch block reached.");
}
finally
![]()
{
Console.WriteLine("ThrowException(\"nested index\")finally" + "block reached.");
}
break;
}
}
}
}
![]()
![]()
//此异常的处理说明,异常产生后,如果在当前未做Try处理,则会返到上一级,如果还未做,则返回上一级的上一级
.以此类推.如果被任意一级Catch到,则上一级不会再得到.
![]()