Difference between revisions of "Auto Assembler:TRY EXCEPT"
(First draft) |
|||
Line 7: | Line 7: | ||
Next, at the end of {$try} you will want to force a jump to a location indicating success; if you do not, then the code after {$except} will be executed. | Next, at the end of {$try} you will want to force a jump to a location indicating success; if you do not, then the code after {$except} will be executed. | ||
− | Also note that the exception may break from any line, so make sure that you exception code can handle unexpected register values. | + | Also note that the exception may break from any line in the {$try}/{$except} block, so make sure that you exception code can handle unexpected register values. |
Revision as of 21:28, 17 November 2018
CE 6.8 added {$try}/{$except} to auto assembler scripts.
Essentially, any code included in the {$try}/{$except} block will jump to the {$EXCEPT} part when any kind of exception happens within the block.
This means, you will want to put the code likely to result in an error between {$try} and {$except}.
Next, at the end of {$try} you will want to force a jump to a location indicating success; if you do not, then the code after {$except} will be executed.
Also note that the exception may break from any line in the {$try}/{$except} block, so make sure that you exception code can handle unexpected register values.
In this example, if any error occurs - for example, ecx is zero or ecx+10 is unreadable -, eax will be set to zero:
{$try}
mov eax,[ecx+10]
jmp short @f
{$except}
xor eax,eax
@@: