OPI_RGZ_2011
.pdf71
itemExit.Click += ExitOnClick; itemFile.DropDownItems.Add(itemExit);
//XIL6@;9;;F 56BCD?K Help
//Y6:I;CI About...
ToolStripMenuItem itemAbout = new ToolStripMenuItem(); itemAbout.Text = "&456 L56U5I:K..."; itemAbout.ShortcutKeys = Keys.Control | Keys.A; // Ctrl+A
itemAbout.ShortcutKeyDisplayString = "Ctrl^A";// E8@659;;F "UI5FcMS"
H?I@De C?F bT6U6 :9;<
itemAbout.ShowShortcutKeys = true;// [DC6J5I_K@I8M @ H6:I;CD itemAbout.Click += AboutOnClick; itemHelp.DropDownItems.Add(itemAbout);
}
// fJ56J;MH L6CDO
void OpenOnClick(object sender, EventArgs e)
{
MessageBox.Show("XIU68D@?F 6LbDG \"[DCH5M8M\"", this.Text);
}
void ExitOnClick(object sender, EventArgs e)
{
this.Close();
}
void AboutOnClick(object sender, EventArgs e)
{
MessageBox.Show("XIU68D@?F 6LbDG \"456 L56U5I:K...\"", this.Text);
}
}
}
3.2.2 F F #' ' c%) !, ) %!
5 ( K K - ( . 7
, K . u o
9 n 9 , , -
, o 9
Kn, . Visual C # K 9 9-
, n K , 9 9-
, , ( . J , ( K 9'n
.
72
3.2.2.1 N , c, , F F , !, ) %!
: d , n
(exception). : 9 K
, o System.Exception. v K -
, 9 K 9 9 K, -
:
–Message —
K d ( ;
–StackTrace — 9 n ; - 9 n d , .
5 , o K K, n-
K
System.ApplicationException. ' -
Kn K n
, , .
n , 9 , o
. u o n , 9 9 -
, 9 9 n, d n -
. . u o , 9 9
d , n 9 9 -
, . : 9 ( n -
9- , 9'- n , n , K 9
9 .
9 9 n
9 9, , 9
.
! ' ) F F , %! !, ) %!
.9 9 K . (-
9 9 9 , n
9 9 9 ,
n. .9 9
, K , K
. A 9 9 try
... catch ... finally.
73
try–9 Kn , o n
, ( 9
.
catch–9 Kn , 9 9 Kn , o 9 K 9 try.
finally–9 Kn , o o n 9- -
n d , 9 9 try catch.
. 9 9 :
–, , 9 try;
–9 9 catch, o 9 9 K -
, ( 9 try;
–9 finally , 9 9-
. v 9 ( ,
. ::
try
{
//iK8 B;IS6CM8T7F B@McIO;MO H6C L56U5I:M
}
catch
{
//fJ56JHI L6:M?6H
}
Finally
{
// fcMj9;;F
}
. catch ( n 9'n
. v , o 9 9
n 9'n . J
, n K K
9 catch, 9 9 . 6,
, ( :
9 finally o K , 9 - ( , . v ( 9 , 9 n
, n 9 , n
. . 9 try. .. catch .. finally:
5 n 1/x 9
9 :
static void Main()
{
int x DE4A
74
int y =1 / x; Console.WriteLine(y);
}
v n x>0. u o -
, n :
static void Main()
{
try
{
int x = int.Parse(Console.ReadLine()); int y =1 / x;
Console.WriteLine("y={0}", y); Console.WriteLine("J?6H try @MH6;I;6 @CI?6 ");
}
catch
{
Console.WriteLine("@M;MH?I L6:M?HI");
}
Console.WriteLine("HD;9bT L56U5I:M");
}
A 9 9 9. 3.1.
6 9 3.1 – A 9 9
5 |
. |
ArithmeticException |
' |
|
|
ArrayTypeMismatchException |
8 9 9 ( |
|
|
DivideByZeroException |
8 9 |
FormatException |
8 9 |
|
|
IndexOutOfRangeException |
„ K |
|
|
InvalidCastException |
' |
OutOfMemoryException |
5 ’ |
|
9’n |
OverflowException |
' - |
|
|
StackOverflowException |
' |
75
A o 9 9 9 9:
–9 try , , - 9 9 9;
–o 9 9 ,
9 9 catch ;
–, 9 ( -
9 finally.
/ Exception
7 9 Exception, o 9 ,
K ( 9 9 , - n 9'n, o n .
. n:
–Message — , o n . -
n Kn -, Kn 9'n, o n ;
–HelpLink — (URL) , o
( - 9 ;
–InnerException — d . J 9- 9 n 9 9
, n d K
;
–Source — ' , o K ;
–StackTrace — K( — , o 9 K
;
–TargetSite — , .
GetBaseException. ' -
K( n —
d .
J n , ( .
. — 9 , — n , o n K Message, — n o : -, InnerException.
K Kn -
InnerExceptions. A (
76
, o n 9 9
:
static public void PrintProperties (Exception e)
{
Console.WriteLine ("[?I78M@678D @M;F8HK:"); Console.WriteLine ("TargetSite = {0}", e.TargetSite); Console.WriteLine ("Source = {0}", e.Source); Console.WriteLine ("Message = {0}", e.Message);
if (e.InnerException == null) Console.WriteLine ("InnerException = null"); else Console.WriteLine ("InnerException = {0}", e.InnerException.Message);
Console.WriteLine ("StackTrace = {0}", e.StackTrace); Console.WriteLine ("GetBaseException = {0}", e.GetBaseException ());
}
5 o , o -
-
. 8 ' (
:
–9 9 9 -
, -
, o ;
–o K n,
9 , o 9 9 ,
K .
3.2.2.2 P' ' c%) !, ) %!
A ( 9 .
( :
–, n
9 9 K. ' 9 9 -
, o 9 d 9 9;
–9 ,
n . ' 9 9-
, d .NET 9 -
, .
.9 K .
77
3.2.2.3 N ! #' ' c%) !, ) %!
„ 9 9 n K 9 9
. 5, 9 , o n
9 9, n
NullReferenceException. d 9 9
(, ( , n. : d
, 9 9, o . u o
n 9 catch,
K K throw, :
try
{
//iK8 L6@M;9; JK8M H6C C6CI8HK,
}
catch (System.NullReferenceException e)
{
//q 7<CM L6:DjI<8T H6C, FHMO L959@D5Fr @M;F86H D L686c;MO H6;89H78,
//s6J @MB;IcM8M, cM :6_;I 6J56JM8M @M;F86H @ CI;6:K J?6bD catch,
//4959CI;6 @Mj9 L6 789HK. tHj6 @6;6 ;9 :6_9 JK8M 6J56J?9;6 ?6HI?T;6.
//u6HI?T;6, ;I78KL;MO 5FC6H U9;95Kr @M;F86H L6@865;6 D L959CIr
//v6U6 CI?D L6 789HK.
throw e;
}
' 9 catch, n -
9'n , 9 ( -
K K throw, d
9 .
9
. A
d , -
n 9 d. ' 9'n
n InnerException 9'n -
. v n
, d -
d Inner Exception. 5 ( n -, o n , 9-
K n:
/ / w9 L6cI86H J?6HK Catch. catch (NullReferenceException e)
78
{
throw new NullReferenceException ("FHMO7T 89H78", e);
}
u :
–o 9 , 9 Catch (catch), K Throw (throw);
–o 9 , o n
, 9'n , o n 9 K
, K K-
throw.
3.2.2.4 ' ( ,0 !, )
' 9 ( 9 -
. u o 9 n -
, n . A
( K , -
K K d -
.
'. , d -
. 5 n (
n — . :
, ( -9 d (.
5 , ( K
System.ApplitalionException. v Kn K 9 -
, Message, StackTrace InnerException, ( K , - n 9 d .
5 ( ,
Application Exception. J
n 9'n Widget, n -
9'n , d :
public class WidgetException: System.ApplicationException
{
// wF B:D;;I BJ95DUIr 6J'rH8 Widget. Widget mWidget;
public Widget ErrorWidget
{
get
79
{
return mWidget;
}
}
//w9O H6;785KH865 L5MO:Ir 6J'rH8 Widget D 5FC6H String, bD
//4I5I:985M :6_;I @MH65M786@K@I8M C?F 6LM7K H6;89H78K L56U5I:M
//QI :6:9;8 L6:M?HM. W6B@6?Fr8T7F 8IH6_ 78@65<@I8M L959@I;8I_9;D @957DG
//Y6;785KH865I, j6 LDC85M:K<8T 5DB;D ;IJ65M LI5I:985D@.
//
//QI78KL;MO 5FC6H @MH?MHIr H6;785KH865 B JIB6@6U6 H?I7K
//y @78I;6@?<r @?I78M@D78T Message,
//z7LICH6@I;9 @DC H?I7K ApplicationException.
public WidgetException (Widget W, string S): base (S)
{
// [78I;6@M8M @?I78M@D78T Widget. mWidget = W;
}
}
. d , n -
, ,
:
Widget Alpha;
/ / iK8 L6@M;9; JK8M H6C, j6 KeH6C_Kr 6J'rH8 Widget B D:'F: Alpha. throw new WidgetException (Alpha, "Widget Alpha is corrupt!");
u :
–. : 9 - o System.ApplicationException ( 9- -
, K n, o 9 9 K . v
K -;
–d
K K throw,
d .
3.2.2.5 P' ' c%) !/ , !, ) %!
v :
” 9 9 -
throw, d , o K -. ' n 9 9'n, (
System.Exception. v 9'n n -
9 9.
80
static void Main ()
{
try
{
int x = int.Parse (Console.ReadLine ()); if (x <0) throw new Exception (); // 1 Console.WriteLine ("ok");
}
catch
{
Console.WriteLine ("[@9C9;6 ;9H659H8;9 B;Ic9;;F");
}
}
1 K new 9 9'n -
Exception. ' 9 (
9- .
' ( , 9 " " 9 9 . 5:
static void Main ()
{
try
{
int x = int.Parse (Console.ReadLine ());
if (x <0) throw new Exception ("@@9C9;6 ;9L5MLK78M:9 B;Ic9;;F"); //
1
Console.WriteLine ("ok");
}
catch (Exception error)
{
Console.WriteLine (error.Message);
}
}
3.2.2.6 , % (, #' ' c%d !, ) %!
7 9 9
.
' 1. . try-9 ( d. :, -
d try-9 catch-
nK, ' try-9, n d
try-9. 5,
ArithmeticException Kn d try-9, - d.
static void Main ()
{
Console.WriteLine ("a =");