====== begin sequence - end sequence ====== The ''begin sequence'' - ''recover'' - ''end sequence'' statements are widely used in VO applications, and the X# compiler translates it mainly in the ''try'' - ''catch'' and ''end try'' statements. So, if you are transporting VO code, you can keep these statements safely, but for new code please use the .NET equivalents [[trycatch|Try - Catch]]. Where the X# compiler adds functionality in the translation is in the recover statement, to support the VO ''break'' command, and encapsulates the exception in an usual. And it adds support for the ''CanBreak()'' function. Please see here for a detailled explanation: [[https://www.xsharp.info/forum/public-product/1418-dtawin-server-exceptions#10445|https://www.xsharp.info/forum/public-product/1418-dtawin-server-exceptions#10445]] The biggest difference between the error handling in .NET and Visual Objects stays in the ErrorBlock() handling. Please see the relative topic: [[vo_errorblock|The VO ErrorBlock]] The biggest difference is that in VO you can set a global error handler, and this is then called every time a runtime error is encountered, regardless of the presence of a ''begin sequence'' - ''end sequence'' block. In .NET, if an exception is occurring, and there is no ''try'' - ''end try'' block that encapsulates this code, the program is terminated abnormally. If there is such a block, the execution continues in the ''catch'' part of this block, and then the program continues to run normally, and if the ''catch'' block does not shows any error, you will not see any error message. Therefore, in X# the presence of error handling is much more important than in VO.