llvm error
play

llvm::Error Rich Error Handling in LLVM Error Handling History - PowerPoint PPT Presentation

llvm::Error Rich Error Handling in LLVM Error Handling History LLVMs APIs historically used ad-hoc approaches bools, nullptrs, string errors std::error_code C++ standard library error type Enumerable errors only Lack


  1. llvm::Error Rich Error Handling in LLVM

  2. Error Handling History • LLVM’s APIs historically used ad-hoc approaches • bools, nullptrs, string errors… • std::error_code • C++ standard library error type • Enumerable errors only • Lack of enforcement — easy to drop errors

  3. Exceptions • User defined error types • Type safe handlers • Once thrown, impossible to forget However… • Not actually zero-cost • Turned off in LLVM

  4. llvm::Error • Error as return value: 
 Error foo(…); 
 Expected<T> bar(…); 
 • User defined error types: 
 class MyError 
 : public ErrorInfo<MyError> { … }; 
 • Errors must be checked before destruction

  5. Idiomatic Usage Error foo(…); 
 if (auto Err = foo(…)) 
 return Err; Conversion to bool 
 “checks” error

  6. Idiomatic Usage Error foo(…); foo(…); Destruction of unchecked 
 Error triggers abort

  7. Type-safe Handlers Error foo(…); 
 handleErrors( foo(…), [](MyError &M) { 
 }, [](SomeOtherError &S) { 
 }, …, 
 );

  8. Benefits • Safer: Avoid vulnerabilities due to missed errors • More descriptive: • LLVM ERROR: Malformed MachO file. becomes • truncated or malformed object 
 (bad section index: 66 for symbol at index 8) • Supports error hierarchies (e.g. ObjectFileError)

  9. Conclusion • Many utilities: • Interoperability with std::error_code and ErrorOr • Standard error types (StringError) • Exit-on-error idiom support for tool code • Check out Programmers Manual for usage

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend