Project

General

Profile

Actions

Feature #5866

closed

ValidationError

Added by trans (Thomas Sawyer) over 12 years ago. Updated over 5 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-core:41987]

Description

I've come across this from time to time, where some piece of complex data, often (but not always) loaded from a file, doesn't conform to some set of validation requirements. I've never been quite sure what type of error to throw if the data doesn't conform. It's not exactly an ArgumentError, it's more complex then that and not necessarily coming in via method arguments, nor is it exactly a TypeError since it's not necessarily anything to do with a specific class. So I find myself falling back to Runtime error and rolling my own, but thinking it would be nice if there were a general purpose ValidationError to raise or subclass in these cases.

Updated by Anonymous over 12 years ago

On 01/08/2012 04:57 AM, Thomas Sawyer wrote:

I've come across this from time to time, where some piece of complex
data, often (but not always) loaded from a file, doesn't conform to
some set of validation requirements. I've never been quite sure what
type of error to throw if the data doesn't conform. It's not exactly
an ArgumentError, it's more complex then that and not necessarily
coming in via method arguments, nor is it exactly a TypeError since
it's not necessarily anything to do with a specific class. So I find
myself falling back to Runtime error and rolling my own, but thinking
it would be nice if there were a general purpose ValidationError to
raise or subclass in these cases.

Why not subclass Syntax error, and put the class in a namespace
belonging to your particular validation requirements? This is more or
less what YAML does.

Updated by nobu (Nobuyoshi Nakada) over 12 years ago

  • Status changed from Open to Feedback

It sounds like an application (or library) layer story.
Why does it need to be supported in the language layer?

Updated by trans (Thomas Sawyer) over 12 years ago

SyntaxError? I suppose we might assume that's appropriate if YAML is doing it, but ScriptError is not a StandardError, rather it is a ScriptError, which I think means it's supposed to be for RUBY syntax errors only. Am I wrong to think that?

"It sounds like an application (or library) layer story. Why does it need to be supported in the language layer?"

Yes, but it's helpful to base an app/library's errors on a standard superclass that fits. If a type of exception is so very common then I think it makes sense for Ruby to have a standard exception for it. I think validation is a very clear case for that. And an example for it might well be the fore mentioned YAML's use of SyntaxError, where something like ValidationError might, it seems to me, be more appropriate.

Updated by trans (Thomas Sawyer) over 12 years ago

Oops, that should read "but SyntaxError is not a StandardError"

Updated by regularfry (Alex Young) over 12 years ago

Maybe:

class InputFormatError < IOError
end

?

--
Alex

Updated by ko1 (Koichi Sasada) over 11 years ago

  • Target version changed from 2.0.0 to 2.6

I changed target to next minor because no feedback there.

Actions #7

Updated by naruse (Yui NARUSE) over 6 years ago

  • Target version deleted (2.6)

Updated by matz (Yukihiro Matsumoto) over 5 years ago

  • Status changed from Feedback to Rejected

The term Validation may have different meaning upon applications. There's no reason to treat them uniformly.
In addition, we already have many ValidationError in many gems. Adding canonical ValidationError can cause incompatibility.

Matz.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0