按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
will throw an exception only if something really problematic has occurred。 A big problem is
beyond the scope of the IterateBuffers() method; and thus needs to be handled at a higher
level。 Think of it as the situation where you have a criminal case and the local municipal court
automatically delegates the case to the provincial or state level; because those courts are equipped
to deal with such a case。
…………………………………………………………Page 155……………………………………………………………
CH AP T E R 5 ■ L E AR N IN G AB O U T V I SU A L B AS IC E X CE PT I ON HA N D L IN G 133
Processing Errors That Are Warnings
One of the silliest things that programs do is exit when they could have continued working。 It
reminds me of when my family lived on the French Rivera; where it does not rain too often。 Our
two bulldogs were used to the nice weather; and at the slightest hint of moisture in the air; they
would refuse to go outside。 Our male dog Big Boss (Man) would stand in the doorway; stick his
nose out slightly; and take a few deep breaths。 If he sensed the slightest bit of moisture; instantly
you were dragging an 80…pound concrete block。
The point is that; like our bulldogs; programs sometimes overreact to situations。 For fear
of having problems or not doing something correctly; they instantly shut down。
Let’s say that you have a program that requires a configuration file to run。 What happens
when the configuration file does not exist? One approach is to panic and exit。 The panic approach
will work; but what if multiple problems follow from the first one? Then you are painstakingly
hitting one error after another。 Another approach is to use a default action。 In this example; the
default action could be to display a dialog box asking the user to select a configuration file; or
the program could create a default file; as in this example:
Try
LoadConfiguration()
Catch ex As ConfigurationException
CreateDefaultConfiguration()
End Try
Here; the LoadConfiguration() method is in a Try/Catch block; but the Catch block
catches only ConfigurationException failures (a built…in Visual Basic exception)。 If there is a
ConfigurationException failure; then a default configuration is created。 With a default config
uration; the program can continue processing。 Using the filtering capabilities of exceptions; if
another exception is thrown in LoadConfiguration(); then some higher…level exception
handler will process it。
When processing an error that is a warning; the important steps are to filter for the specific
exception and implement an appropriate exception handler that has been properly tested。 Don’t
try to implement a fix…all exception handler; because you will never be able to implement a
proper handler and thus will cause more problems。 In the handler to fix the problem; make
sure that you don’t generate an exception。 If you do; that exception will be sent to a higher
method caller。
The Important Stuff to Remember
In this chapter; you learned about errors and exceptions。 Here are the key points to keep in mind:
o Errors and exceptions will always occur in your programs。
o Your code is split into a tree very much like a management hierarchy。 The hierarchy
contains two types of code: code that organizes and code that implements。
o Exceptions are caught using Try/Catch blocks。
o The Finally block is used to execute code; regardless of whether an exception is thrown;
and to reset state。
…………………………………………………………Page 156……………………………………………………………
134 CH AP T E R 5 ■ L E A R N IN G AB OU T V I SU A L B AS IC E X C E P TI ON H AN D L IN G
o Code that implements has the responsibility of throwing exceptions。 Code that imple
ments does not try to fix or swallow the exception。 This means code that implements will
implement a Finally block to reset state; but usually not a Catch block。
o Code that organizes has the responsibility of being aware that exceptions might occur。
This means code that organizes will implement Catch blocks to catch exceptions and
process them。 Usually; this code will not have a Finally implementation; but it may
filter exceptions。
o Exceptions can be filtered to determine which exceptions will be captured and which
cannot be captured。
o You can help make your code exception…safe by implementing sandboxing
functionality。
o Implement default state so that your code is easier to read and maintain。
Some Things for You to Do
To apply what you’ve learned in this chapter; here’s what you can do; summed up in a single step:
1。 Rewrite all of the code examples in Chapter 4 to be exception…safe。
…………………………………………………………Page 157……………………………………………………………
C H A P T E R 6
■ ■ ■
Learning the Basics of Object
Oriented Programming
At this point; you should be fortable with writing basic Visual Basic code; but your coding
style would solve problems directly without considering reusability or other more advanced
concepts。 You could code yourself out of a wet paper bag; but once you were out of the bag; you
would have no idea what to do next。 (In case you’re interested; the phrase; “You couldn’t do 'fill
in topic' out of a wet paper bag” implies that your skills in a certain area are so weak that a wet
paper bag is more overpowering。 The reference to wet paper bag es from the fact that wet
paper bags have no holding power and will tear at the slightest nudging。)
This chapter focuses on reusing base functionality; where two classes share methods and
properties in mon to solve a particular problem。 To demonstrate the concepts; we will create
a simple currency exchange application。 This application will use object…oriented programming;
a powerful set of techniques mon in modern programming languages such as Visual Basic。
In this chapter; you’ll learn about the following topics:
Object…oriented programming: Object…oriented; often abbreviated as OO; refers to a way of
building applications using instantiated types。 First; you define the type and its behavior。
Then; when instantiated; the type has a state。 When you are developing; you don’t know
the state of the object; so you can only guess at it。
Data member scopes: Types have methods; and methods can be called by other types。 But
do you want to let all types call all of a type’s methods? Think of it as follows。 When you are
at a party; do you want to allow everyone to grab into your pockets? No; you want to control
access to your pockets; just as you want to control access to your type’s methods。
Properties: There are methods; and there are properties。 Methods are supposed to do things
to a type。 Properties are external state representations of a type。
Base classes: The term base class denotes mon functionality。 We use the word base;
because in object…oriented programming; hierarchy is defined from the base upwards。 We
use the word class; because class is the basic type that contains functionality。
Let’s begin with some background on how currency exchange works; which applies to the
currency converter application we’ll develop in this chapter to demonstrate object…oriented
programming concepts。
135
…………………………………………………………Page 158……………………………………………………………
136