Difference between revisions of "Auto Assembler:TRY EXCEPT"

From Cheat Engine
Jump to navigation Jump to search
(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

@@: