⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap13.lst

📁 Csharp2完全参考手册源代码 详细的说明可以在书里看到 该书是08年刚出炉很新鲜
💻 LST
📖 第 1 页 / 共 2 页
字号:
listing 1
// Demonstrate exception handling. 
 
using System; 
 
class ExcDemo1 { 
  public static void Main() { 
    int[] nums = new int[4]; 
 
    try { 
      Console.WriteLine("Before exception is generated."); 
 
      // Generate an index out-of-bounds exception. 
      for(int i=0; i < 10; i++) { 
        nums[i] = i; 
        Console.WriteLine("nums[{0}]: {1}", i, nums[i]); 
      } 
 
      Console.WriteLine("this won't be displayed"); 
    } 
    catch (IndexOutOfRangeException) { 
      // catch the exception 
      Console.WriteLine("Index out-of-bounds!"); 
    } 
    Console.WriteLine("After catch statement."); 
  } 
}

listing 2
/* An exception can be generated by one 
   method and caught by another. */ 
 
using System; 
 
class ExcTest { 
  // Generate an exception. 
  public static void genException() { 
    int[] nums = new int[4];  
 
    Console.WriteLine("Before exception is generated."); 
  
    // Generate an index out-of-bounds exception. 
    for(int i=0; i < 10; i++) { 
      nums[i] = i; 
      Console.WriteLine("nums[{0}]: {1}", i, nums[i]); 
    } 
 
    Console.WriteLine("this won't be displayed");  
  } 
}     
 
class ExcDemo2 {  
  public static void Main() {  
  
    try {  
      ExcTest.genException(); 
    }  
    catch (IndexOutOfRangeException) {  
      // catch the exception  
      Console.WriteLine("Index out-of-bounds!");  
    }  
    Console.WriteLine("After catch statement.");  
  }  
}

listing 3
// Let the C# runtime system handle the error. 
 
using System; 
 
class NotHandled { 
  public static void Main() { 
    int[] nums = new int[4]; 
 
    Console.WriteLine("Before exception is generated."); 
 
    // Generate an index out-of-bounds exception. 
    for(int i=0; i < 10; i++) { 
      nums[i] = i; 
      Console.WriteLine("nums[{0}]: {1}", i, nums[i]); 
    } 
 
  } 
}

listing 4
// This won't work! 
 
using System; 
 
class ExcTypeMismatch {  
  public static void Main() {  
    int[] nums = new int[4];  
  
    try {  
      Console.WriteLine("Before exception is generated."); 
  
      // Generate an index out-of-bounds exception. 
      for(int i=0; i < 10; i++) { 
        nums[i] = i; 
        Console.WriteLine("nums[{0}]: {1}", i, nums[i]); 
      } 
 
      Console.WriteLine("this won't be displayed");  
    }  
 
    /* Can't catch an array boundary error with a 
       DivideByZeroException. */ 
    catch (DivideByZeroException) {  
      // catch the exception  
      Console.WriteLine("Index out-of-bounds!");  
    }  
    Console.WriteLine("After catch statement.");  
  }  
}

listing 5
// Handle error gracefully and continue. 
 
using System; 
 
class ExcDemo3 { 
  public static void Main() { 
    int[] numer = { 4, 8, 16, 32, 64, 128 }; 
    int[] denom = { 2, 0, 4, 4, 0, 8 }; 
 
    for(int i=0; i < numer.Length; i++) { 
      try { 
        Console.WriteLine(numer[i] + " / " + 
                          denom[i] + " is " + 
                          numer[i]/denom[i]); 
      } 
      catch (DivideByZeroException) { 
        // catch the exception 
        Console.WriteLine("Can't divide by Zero!"); 
      } 
    } 
  } 
}

listing 6
// Use multiple catch statements. 
 
using System; 
 
class ExcDemo4 { 
  public static void Main() { 
    // Here, numer is longer than denom. 
    int[] numer = { 4, 8, 16, 32, 64, 128, 256, 512 }; 
    int[] denom = { 2, 0, 4, 4, 0, 8 }; 
 
    for(int i=0; i < numer.Length; i++) { 
      try { 
        Console.WriteLine(numer[i] + " / " + 
                           denom[i] + " is " + 
                           numer[i]/denom[i]); 
      } 
      catch (DivideByZeroException) { 
        // catch the exception 
        Console.WriteLine("Can't divide by Zero!"); 
      } 
      catch (IndexOutOfRangeException) { 
        // catch the exception 
        Console.WriteLine("No matching element found."); 
      } 
    } 
  } 
}

listing 7
// Use the "catch all" catch statement. 
 
using System; 
 
class ExcDemo5 { 
  public static void Main() { 
    // Here, numer is longer than denom. 
    int[] numer = { 4, 8, 16, 32, 64, 128, 256, 512 }; 
    int[] denom = { 2, 0, 4, 4, 0, 8 }; 
 
    for(int i=0; i < numer.Length; i++) { 
      try { 
        Console.WriteLine(numer[i] + " / " + 
                           denom[i] + " is " + 
                           numer[i]/denom[i]); 
      } 
      catch { 
        Console.WriteLine("Some exception occurred."); 
      } 
    } 
  } 
}

listing 8
// Use a nested try block. 
 
using System; 
 
class NestTrys { 
  public static void Main() { 
    // Here, numer is longer than denom. 
    int[] numer = { 4, 8, 16, 32, 64, 128, 256, 512 }; 
    int[] denom = { 2, 0, 4, 4, 0, 8 }; 
 
    try { // outer try 
      for(int i=0; i < numer.Length; i++) { 
        try { // nested try 
          Console.WriteLine(numer[i] + " / " + 
                             denom[i] + " is " + 
                             numer[i]/denom[i]); 
        } 
        catch (DivideByZeroException) { 
          // catch the exception 
          Console.WriteLine("Can't divide by Zero!"); 
        } 
      } 
    }  
    catch (IndexOutOfRangeException) { 
      // catch the exception 
      Console.WriteLine("No matching element found."); 
      Console.WriteLine("Fatal error -- program terminated."); 
    } 
  } 
}

listing 9
// Manually throw an exception. 
 
using System; 
 
class ThrowDemo { 
  public static void Main() { 
    try { 
      Console.WriteLine("Before throw."); 
      throw new DivideByZeroException(); 
    } 
    catch (DivideByZeroException) { 
      // catch the exception 
      Console.WriteLine("Exception caught."); 
    } 
    Console.WriteLine("After try/catch block."); 
  } 
}

listing 10
// Rethrow an exception. 
 
using System; 
 
class Rethrow { 
  public static void genException() { 
    // here, numer is longer than denom 
    int[] numer = { 4, 8, 16, 32, 64, 128, 256, 512 }; 
    int[] denom = { 2, 0, 4, 4, 0, 8 }; 
 
    for(int i=0; i<numer.Length; i++) { 
      try { 
        Console.WriteLine(numer[i] + " / " + 
                          denom[i] + " is " + 
                          numer[i]/denom[i]); 
      } 
      catch (DivideByZeroException) { 
        // catch the exception 
        Console.WriteLine("Can't divide by Zero!"); 
      } 
      catch (IndexOutOfRangeException) { 
        // catch the exception 
        Console.WriteLine("No matching element found."); 
        throw; // rethrow the exception 
      } 
    } 
  }   
} 
 
class RethrowDemo { 
  public static void Main() { 
    try { 
      Rethrow.genException(); 
    } 
    catch(IndexOutOfRangeException) { 
      // recatch exception 
     Console.WriteLine("Fatal error -- " + 
                       "program terminated."); 
    } 
  } 
}

listing 11
// Use finally. 
 
using System; 
 
class UseFinally { 
  public static void genException(int what) { 
    int t; 
    int[] nums = new int[2]; 
 
    Console.WriteLine("Receiving " + what); 
    try { 
      switch(what) { 
        case 0:  
          t = 10 / what; // generate div-by-zero error 
          break; 
        case 1: 
          nums[4] = 4; // generate array index error. 
          break; 
        case 2: 
          return; // return from try block 
      } 
    } 
    catch (DivideByZeroException) { 
      // catch the exception 
      Console.WriteLine("Can't divide by Zero!"); 
      return; // return from catch 
    } 
    catch (IndexOutOfRangeException) { 
      // catch the exception 
      Console.WriteLine("No matching element found."); 
    } 
    finally { 
      Console.WriteLine("Leaving try."); 
    } 
  }   
} 
 
class FinallyDemo { 
  public static void Main() { 
     
    for(int i=0; i < 3; i++) { 
      UseFinally.genException(i); 
      Console.WriteLine(); 
    } 
  } 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -