Spaces:
Runtime error
Runtime error
// --------------------------------------------------------------------------------------- | |
// --------------------------------------------------------------------------------------- | |
namespace portaudio | |
{ | |
////// | |
/// @brief Base class for all exceptions PortAudioCpp can throw. | |
/// | |
/// Class is derived from std::exception. | |
////// | |
class Exception : public std::exception | |
{ | |
public: | |
virtual ~Exception() throw() {} | |
virtual const char *what() const throw() = 0; | |
}; | |
// ----------------------------------------------------------------------------------- | |
////// | |
/// @brief Wrapper for PortAudio error codes to C++ exceptions. | |
/// | |
/// It wraps up PortAudio's error handling mechanism using | |
/// C++ exceptions and is derived from std::exception for | |
/// easy exception handling and to ease integration with | |
/// other code. | |
/// | |
/// To know what exceptions each function may throw, look up | |
/// the errors that can occur in the PortAudio documentation | |
/// for the equivalent functions. | |
/// | |
/// Some functions are likely to throw an exception (such as | |
/// Stream::open(), etc) and these should always be called in | |
/// try{} catch{} blocks and the thrown exceptions should be | |
/// handled properly (ie. the application shouldn't just abort, | |
/// but merely display a warning dialog to the user or something). | |
/// However nearly all functions in PortAudioCpp are capable | |
/// of throwing exceptions. When a function like Stream::isStopped() | |
/// throws an exception, it's such an exceptional state that it's | |
/// not likely that it can be recovered. PaExceptions such as these | |
/// can ``safely'' be left to be handled by some outer catch-all-like | |
/// mechanism for unrecoverable errors. | |
////// | |
class PaException : public Exception | |
{ | |
public: | |
explicit PaException(PaError error); | |
const char *what() const throw(); | |
PaError paError() const; | |
const char *paErrorText() const; | |
bool isHostApiError() const; // extended | |
long lastHostApiError() const; | |
const char *lastHostApiErrorText() const; | |
bool operator==(const PaException &rhs) const; | |
bool operator!=(const PaException &rhs) const; | |
private: | |
PaError error_; | |
}; | |
// ----------------------------------------------------------------------------------- | |
////// | |
/// @brief Exceptions specific to PortAudioCpp (ie. exceptions which do not have an | |
/// equivalent PortAudio error code). | |
////// | |
class PaCppException : public Exception | |
{ | |
public: | |
enum ExceptionSpecifier | |
{ | |
UNABLE_TO_ADAPT_DEVICE | |
}; | |
PaCppException(ExceptionSpecifier specifier); | |
const char *what() const throw(); | |
ExceptionSpecifier specifier() const; | |
bool operator==(const PaCppException &rhs) const; | |
bool operator!=(const PaCppException &rhs) const; | |
private: | |
ExceptionSpecifier specifier_; | |
}; | |
} // namespace portaudio | |
// --------------------------------------------------------------------------------------- | |