1 namespace _20130405
2 {
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 Loop:
8 try
9 {
10 Console.WriteLine("Input Intager One:");
11 int x = Convert.ToInt32(Console.ReadLine());
12 Console.WriteLine("Input Intager Two:");
13 int y = Convert.ToInt32(Console.ReadLine());
14 Console.WriteLine("x / y = {0}", x / y);
15 }
16 catch (FormatException format)
17 {
18 //Console.WriteLine(format.Message);
19 Console.WriteLine(format.TargetSite); //捕获引发当前异常的方法
20 Console.WriteLine();
21 Console.WriteLine();
22 Console.WriteLine(format.StackTrace); //捕获当前异常发生所经历的方法的名称和签名
23 Console.WriteLine();
24 Console.WriteLine();
25 Console.WriteLine(format.Source); //捕获或设置导致错误的应用程序或对象的名称
26 Console.WriteLine();
27 Console.WriteLine();
28 /*
29 Input Intager One:
30 1.0
31 Void StringToNumber(System.String, System.Globalization.NumberStyles, NumberBuff
32 er ByRef, System.Globalization.NumberFormatInfo, Boolean)
33
34
35 在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffe
36 r& number, NumberFormatInfo info, Boolean parseDecimal)
37 在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo in
38 fo)
39 在 System.Convert.ToInt32(String value)
40 在 _20130405.Program.Main(String[] args) 位置 F:\2013\20130405\20130405\Progr
41 am.cs:行号 17
42
43
44 mscorlib
45 */
46 }
47 catch (DivideByZeroException zero)
48 {
49 //Console.WriteLine(zero.Message);
50 Console.WriteLine(zero.TargetSite);
51 Console.WriteLine();
52 Console.WriteLine();
53 Console.WriteLine(zero.StackTrace);
54 Console.WriteLine();
55 Console.WriteLine();
56 Console.WriteLine(zero.Source);
57 Console.WriteLine();
58 Console.WriteLine();
59 /*
60 Input Intager One:
61 1
62 Input Intager Two:
63 0
64 Void Main(System.String[])
65
66
67 在 _20130405.Program.Main(String[] args)
68
69
70 20130405
71 */
72 }
73 catch (Exception e)
74 {
75 //当捕获多个异常时,若两个catch块的异常类存在继承关系,则要先捕获派生类的异常,再捕获基类的异常.
76 //否则,捕获派生类异常的catch块将不起作用,并且会在编译时报错. 所以此处的这个catch必须放在三个
77 //catch中的最后
78 Console.WriteLine(e.Message);
79 }
80
81 goto Loop;
82 }
83 }
84 }