Class to represent an application (expected/recoverable) error condition.
Application exceptions are those situations where valid program logic does not return the expected results. These kind of situations typically occur on (but isn't limited to) user input. Suppose a database search on user with a specific email address fails: this is an expected application exception. This in contrast to a database search on the user's database id field for which a failed lookup should probably be considered a severe program error.
Application exceptions will be thrown in the Scrivo library when some business rule is not met. The exception code will then contain one of the Scrivo error codes.