异常

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到,则上一级不会再得到.

posted on 2007-11-01 13:18  simhare  阅读(142)  评论(0)    收藏  举报

导航