+ All Categories
Home > Documents > Error handling in visual fox pro 9

Error handling in visual fox pro 9

Date post: 30-Apr-2015
Category:
Upload: mike-feltman
View: 2,651 times
Download: 12 times
Share this document with a friend
Description:
Session on error handling I gave as a fill in at Southwest Fox I think.
24
Error Handling in Error Handling in Visual FoxPro 9.0 Visual FoxPro 9.0 Mike Feltman Mike Feltman
Transcript
Page 1: Error handling in visual fox pro 9

Error Handling in Visual Error Handling in Visual FoxPro 9.0FoxPro 9.0

Mike FeltmanMike Feltman

Page 2: Error handling in visual fox pro 9

Who Am IWho Am I• President F1 TechnologiesPresident F1 Technologies• Visual FoxExpress DeveloperVisual FoxExpress Developer• Visual FoxPro DinosaurVisual FoxPro Dinosaur• [email protected]@f1tech.com• www.f1tech.comwww.f1tech.com • www.f1technologies.blogspot.comwww.f1technologies.blogspot.com

Page 3: Error handling in visual fox pro 9

AgendaAgenda• Errors HappenErrors Happen• Types of ErrorsTypes of Errors• Error Trapping MethodsError Trapping Methods• Dealing with ErrorsDealing with Errors• Combining MethodsCombining Methods

Page 4: Error handling in visual fox pro 9

Errors HappenErrors Happen• Virtually All Programs Virtually All Programs

Have ErrorsHave Errors• All Applications – even All Applications – even

“bug free” ones - can “bug free” ones - can encounter an errorencounter an error

Page 5: Error handling in visual fox pro 9

Types of ErrorsTypes of Errors• Coding ErrorsCoding Errors

– Syntax Errors, Data Type Mismatch, Invalid # Syntax Errors, Data Type Mismatch, Invalid # of Parameters, etc. of Parameters, etc.

• Environmental ErrorsEnvironmental Errors– File Corruption, Printer not ready, Resource not File Corruption, Printer not ready, Resource not

Available, File not Found, Available, File not Found,

• User ErrorsUser Errors– Duplicate keys, invalid valuesDuplicate keys, invalid values

Page 6: Error handling in visual fox pro 9

Types of Error TrappingTypes of Error Trapping• NativeNative• ON ERRORON ERROR• Error MethodError Method• TRY/CATCHTRY/CATCH• OTHEROTHER

Page 7: Error handling in visual fox pro 9

Native Error HandlingNative Error Handling• At Design Time – Cancel, Ignore or At Design Time – Cancel, Ignore or

SuspendSuspend• At Run Time – Cancel or IgnoreAt Run Time – Cancel or Ignore

Page 8: Error handling in visual fox pro 9

ON ERRORON ERROR• Oldest method in the bookOldest method in the book• Format: Format:

– ON ERROR <action>ON ERROR <action>– ON ERROR *ON ERROR *– ON ERROR DO ErrorHandler WITH…ON ERROR DO ErrorHandler WITH…– ON ERROR llError = .T.ON ERROR llError = .T.– ON ERROR ON ERROR

goErrorHandler.DealWithIt(…)goErrorHandler.DealWithIt(…)

Page 9: Error handling in visual fox pro 9

ON ERRORON ERROR• ProsPros

– Centralized Centralized MechanismMechanism

– Catch allCatch all– Supports RETRYSupports RETRY– Supports RETURNSupports RETURN

• ConsCons– Removed from Removed from

offending codeoffending code– Forces Monolithic Forces Monolithic

Style of error handlingStyle of error handling– May require additional May require additional

inline detection of inline detection of error states in error states in application codeapplication code

– Difficult to deal with Difficult to deal with specific scenariosspecific scenarios

Page 10: Error handling in visual fox pro 9

ON ERRORON ERROR• SamplesSamples

– Error1.prgError1.prg– cErrorHandler of cErrorcErrorHandler of cError

Page 11: Error handling in visual fox pro 9

The Error EventThe Error Event• Added in VFP 3.0Added in VFP 3.0• Native to all VFP ObjectsNative to all VFP Objects• Error(nError, cMethod, nLine)Error(nError, cMethod, nLine)

Page 12: Error handling in visual fox pro 9

The Error EventThe Error Event• ProsPros

– Localized to Localized to offending objectoffending object

– Supports RETRYSupports RETRY– Supports RETURNSupports RETURN

• Leads to duplicate Leads to duplicate codecode

• Can Require Lengthy Can Require Lengthy DO CASE constructsDO CASE constructs

• Turns off ON ERROR Turns off ON ERROR error handlingerror handling

• May require May require additional inline additional inline detection of error detection of error states in application states in application codecode

Page 13: Error handling in visual fox pro 9

The Error EventThe Error Event• SamplesSamples

– Error2.prgError2.prg– cCursor of cDatacCursor of cData

Page 14: Error handling in visual fox pro 9

TRY CATCHTRY CATCH

• Added in VFP 8.0Added in VFP 8.0• Structured Error HandlingStructured Error Handling• Format Format

– TRYTRY– CATCH (WHEN) (TO)CATCH (WHEN) (TO)– THROWTHROW– FINALLYFINALLY– ENDTRYENDTRY

Page 15: Error handling in visual fox pro 9

TRY CATCHTRY CATCH• ProsPros

– Deal w/ errors at Deal w/ errors at the sourcethe source

– Less CumbersomeLess Cumbersome– Less Code in Less Code in

specific routinesspecific routines– Easier recovery in Easier recovery in

some instancessome instances– Nests gracefullyNests gracefully

• ConsCons– Adapting Existing Adapting Existing

AppsApps– Can make Can make

debugging more debugging more difficultdifficult

– No RETRY or No RETRY or RETURN TORETURN TO

Page 16: Error handling in visual fox pro 9

The Exception Object & The Exception Object & CatchCatch

• CATCH always creates a base class CATCH always creates a base class exceptionexception

• Key Properties:Key Properties:ErrorNoErrorNo ProcedureProcedure

MessageMessage UserValueUserValue

LineContentsLineContents StackLevelStackLevel

DetailsDetails

Page 17: Error handling in visual fox pro 9

The Throw CommandThe Throw Command• THROW <expression>THROW <expression>• Creates an exceptionCreates an exception• Expression is placed in user valueExpression is placed in user value• Can be used any time a TRY CATCH Can be used any time a TRY CATCH

is in Effectis in Effect• SYS(2410) can be used to detect SYS(2410) can be used to detect

TRY/CATCHTRY/CATCH

Page 18: Error handling in visual fox pro 9

TRY CATCHTRY CATCH• SAMPLESSAMPLES• Error3 – Error9Error3 – Error9

Page 19: Error handling in visual fox pro 9

OTHER ERROR TRAPPINGOTHER ERROR TRAPPING• TABLEUPDATE() ERRORSTABLEUPDATE() ERRORS

– Field Rule Violated 1582Field Rule Violated 1582– Record Rule Violated 1583Record Rule Violated 1583– Trigger Failed 1539Trigger Failed 1539– Unique Index Violated 1884Unique Index Violated 1884– Update Conflict 1585Update Conflict 1585

• SQLEXEC(), SQLCOMMIT(), SQLEXEC(), SQLCOMMIT(), SQLCONNECT(), etc. all populate the SQLCONNECT(), etc. all populate the AERROR array.AERROR array.

Page 20: Error handling in visual fox pro 9

Connectivity ErrorsConnectivity Errors• Connectivity Error 1526Connectivity Error 1526• AERROR() will contain the back-end AERROR() will contain the back-end

error(s)error(s)– Column 3: ODBC Error MessageColumn 3: ODBC Error Message– Column 4: ODBC StateColumn 4: ODBC State– Column 5: ODBC Error NumberColumn 5: ODBC Error Number– Column 6: Connection HandleColumn 6: Connection Handle

• AERROR() can return multiple rowsAERROR() can return multiple rows

Page 21: Error handling in visual fox pro 9

Mixing & MatchingMixing & Matching• If error is w/in object error event If error is w/in object error event

takes precedencetakes precedence• If error is in TRY/CATCH structured If error is in TRY/CATCH structured

error handling takes precedenceerror handling takes precedence• If error is in procedural code ON If error is in procedural code ON

ERROR takes precedenceERROR takes precedence• Samples: Error10 - 16Samples: Error10 - 16

Page 22: Error handling in visual fox pro 9

Related Commands & Related Commands & FunctionsFunctions

• Error DetailsError Details– MESSAGE(), MESSAGE(),

MESSAGE(1)MESSAGE(1)– SYS(2018)SYS(2018)– AERROR()AERROR()

• Error LocationError Location– LINENO()LINENO()– PROGRAM(), SYS(16)PROGRAM(), SYS(16)– ACALLSTACKINFO()ACALLSTACKINFO()

• More InfoMore Info– LIST STATUSLIST STATUS– LIST MEMORYLIST MEMORY– LIST OBJECTSLIST OBJECTS

• EnvironmentEnvironment– SYS(5) + CURDIR()SYS(5) + CURDIR()– SET(“PATH”)SET(“PATH”)– SET(“CLASSLIB”)SET(“CLASSLIB”)– SET(“PROCEDURE”)SET(“PROCEDURE”)– SYS(2019)SYS(2019)– OS()OS()– Version()Version()– SYS(0)SYS(0)

Page 23: Error handling in visual fox pro 9

ConclusionConclusion• VFP Has a lot of ways to deal with errorsVFP Has a lot of ways to deal with errors• Mixing and Matching the techniques lets Mixing and Matching the techniques lets

you take advantage of all of themyou take advantage of all of them• More Info:More Info:

– VFP Best Practices from Henztenwerke (Rick VFP Best Practices from Henztenwerke (Rick Schummer)Schummer)

– Structured Error Handling Topic on Structured Error Handling Topic on Fox.wikis.com by Randy PearsonFox.wikis.com by Randy Pearson

– CoDe Focus VFP 8 Issue CoDe Focus VFP 8 Issue (CodeMagazine.Com)(CodeMagazine.Com)

Page 24: Error handling in visual fox pro 9

Thank you!Thank you!

[email protected]@f1tech.com• www.f1tech.comwww.f1tech.com • www.f1technologies.blogspot.comwww.f1technologies.blogspot.com• 419-255-6366419-255-6366


Recommended