Connection Information

To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed. If you do not remember your credentials, you should contact your web host.

Connection Type

Errors when calling functions and events dynamically – PB Docs 126 – PowerBuilder Library

Errors when calling functions and events dynamically – PB Docs 126

Errors when calling functions and events dynamically

If you call a
function or event dynamically, different conditions create different results,
from no effect to an execution error. The tables in this section
illustrate this.

Functions

The rules for functions are similar to those for events, except
functions must exist: if a function is not found, an error always
occurs. Although events can exist without a script, if a function
is defined it has to have code. Consider the following statements:

  1. This statement calls a function without looking
    for a return value:

  2. This statement looks for an integer return
    value:

  3. This statement looks for an Any return
    value:

The following table uses these statements as examples.

Table 6-3: Dynamic function calling errors

Condition 1

Condition 2

Result

Example

The function does not exist.

None.

Execution error 65: Dynamic function not
found.

All the statements cause error 65.

The function is found and executed but
is not defined with a return value.

The code is looking for a return value.

Execution error 63: Function/event
with no return value used in expression.

Statements 2 and 3 cause error 63.

Events

Consider these statements:

  1. This
    statement calls an event without looking for a return value:

  2. This example looks for an integer return
    value:

  3. This example looks for an Any return
    value:

The following table uses these statements as examples.

Table 6-4: Dynamic event calling errors

Condition 1

Condition 2

Result

Example

The event does not exist.

The code is not looking
for a return value.

Nothing; the call fails silently.

Statement 1 fails but does not cause
an error.

The code is looking for
a return value.

A null of the Any datatype
is returned.

La_any is
set to null in statement 3.

If the expected datatype is not Any, execution
error 19 occurs: Cannot convert Any in Any variable
to datatype.

The assignment to li_int causes execution
error 19 in statement 2.

The event is found but is
not implemented (there is no script).

The event has a defined
return value.

A null of the defined datatype
is returned.

If eventname is defined to return integer, li_int is set
to null in statement 2.

The event does
not have
a defined return value.

A null of the Any datatype
is returned.

La_any is
set to null in statement 3.

If the expected datatype is not Any, execution
error 19 occurs: Cannot convert Any in Any variable
to datatype.

The assignment to li_int causes execution
error 19 in statement 2.

The event is found and executed but is not
defined with a return value.

The code is looking for a return value.

Execution error 63: Function/event
with no return value used in expression.

Statements 2 and 3 cause error 63.

When an error occurs

You can surround a dynamic function call in a try-catch block
to prevent the application from terminating when an execution error
occurs. Although you can also handle the error in the SystemError
event, you should not allow the application to continue once the
SystemError event is invoked—the SystemError event should
only clean up and halt the application.

For information on using try-catch blocks, see the chapter
on exception handling in Application Techniques.

If the arguments do not match

Function arguments are part of the function’s definition.
Therefore, if the arguments do not match (a compatible match, not
an exact match), it is essentially a different function. The result
is the same as if the function did not exist.

If you call an event dynamically and the arguments do not
match, the call fails and control returns to the calling script.
There is no error.

Error-proofing your code

Calling functions and events dynamically opens up your application
to potential errors. The surest way to avoid these errors is to
always make static calls to functions and events. When that is not
possible, your design and testing can ensure that there is always
an appropriate function or event with the correct return datatype.

One type of error you can check for and avoid is data conversion
errors.

The preceding tables illustrated that a function or event
can return a null value either as an Any variable
or as a variable of the expected datatype when a function or event
definition exists but is not implemented.

If you always assign return values to Any variables
for dynamic calls, you can test for null (which
indicates failure) before using the value in code.

This example illustrates the technique of checking for null before
using the return value.


Document get from Powerbuilder help
Thank you for watching.
Was this article helpful?
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x