Bridging Swift Error Handling Model to C++

Roberto Gomes Rosmaninho Neto

Error handling is the process of responding to and recovering from error conditions in the program. In Swift, errors are represented by values of types that conform to the Error protocol. Throwing an error lets you indicate that something unexpected happened, and the normal flow of execution can’t continue. A throw statement is used to throw an error. Optional returns are used to represent the absence of a value, but when an operation fails, it’s often useful to understand what caused the failure so that code can respond accordingly. Therefore, I propose to bridge the Swift Error Handling modeling to C++ to improve the interoperability between the programming languages. The main idea is to be able to throw a C++ exception that stores a thrown Swift Error that has to be represented by a C++ class. In addition to that, to support C++ programs that don’t use exceptions, I propose an additional interoperability mode for throwing functions. When C++ exceptions are disabled, C++ functions should return a result value that contains either the value returned by the function, or the Swift Error value: the Swift::Exception<T> class.


2022/2 - POC2

Orientador: Fernando Magno Quintão Pereira

Palavras-chave: C++; Swift; Compilers; Interop; Handling Error; Exceptions; PL; Programming Language

Link para vídeo

PDF Disponível