Sorry for the slow response. Perhaps you've already worked it out, but anyway a few options...
You "could" pass thisContext as a block parameter
initialize
�� �� �� �� errorBlock := [ :tPduError :aContext | Error signal:'Method: ' , aContext selector
asString , '�� with result: ', tPduError item asString ].����
��pduDestruct����
�� �� �� �� �� result = T_PDU_ERROR PDU_STATUS_NOERROR ifFalse: [ errorBlock value: result value: thisContext
------------------------------------
But rather I suggest a better option is to separate this logic into its own error class...
Error subclass: #PduError
�� �� ... instanceVariables: 'result selector'
PduError class >> result: aResult context: aContext
�� �� ^ self new initializeResult: aResult selector: aContext�� selector asString
PduError >> initializeResult: aResult selector: selectorString
�� �� result := aResult.
�� �� selector :=�� selectorString
PduEror>>messageText
�� �� as you like - refer to other implementors��for example
�� PduError>>printOn:
�� ��as you like - refer to other implementors��for example
�� pduDestruct
�� �� �� �� | result |
�� �� �� �� result := call ffiPDUDestruct.
�� �� �� �� result = T_PDU_ERROR PDU_STATUS_NOERROR ifFalse: [��
�� �� �� �� �� �� �� ��(PduError
result: aResult context: thisContext)��signal ]
��
cheers -ben
Hello,
I would like to output the method name as a string in case of an error.
what I've already done is this: (with thisContext selector asString)
pduDestruct
�� �� �� �� | result |
�� �� �� �� result := call ffiPDUDestruct.
�� �� �� �� result = T_PDU_ERROR PDU_STATUS_NOERROR
ifFalse: [ Error signal:'Method: ' , thisContext selector asString , '�� with
result: ', result item asString ]
but now I use it more often. And wanted to rebuild it like that.
initialize
�� �� �� �� errorBlock := [ :tPduError | Error signal:'Method: ' , thisContext selector
asString , '�� with result: ', tPduError item asString ].
pduDestruct
�� �� �� �� | result |
�� �� �� �� result := call ffiPDUDestruct.
�� �� �� �� result = T_PDU_ERROR PDU_STATUS_NOERROR ifFalse: [ errorBlock value: result
]
but that doesn't work because "this Context selector toString" now returns
'initialize'.
Can someone give me a hint how to solve this?
Is "thisContext selector asString" the only way to get the name of the
method at runtime?
Thanks in advance.