Error con la excepción de Ruby

Tengo una matriz definida como esta,

result = ["true","false","false","false"]

En mi código, itero a través de la matriz y genero una excepción cuando me encuentro con false.

begin  result.each  do |method| 
           raise  if (method == false) {
           rescue Exception => Form_Validation_Failure
                  puts "fail!"
           end } 
       end

Hay un error cuando ejecuto el código. ¿Es esta la forma correcta de generar una excepción en Ruby? ¿Alguien podría ayudar con esto por favor?

¡Aclamaciones!

preguntado el 08 de noviembre de 11 a las 09:11

2 Respuestas

Además de usar cadenas en su matriz y la constante false en su comparación, veo un rescate dentro de aparatos ortopédicos.

Creo que la forma de código que está buscando es:

>> result = [true,false,true,false]
=> [true, false, true, false]
>>
?> result.each do |method|
?>   begin
?>     raise if not method   # preferred to method == false
>>     puts "ok"
>>   rescue
>>     puts "fail!"
>>   end
>> end
ok
fail!
ok
fail!
=> [true, false, true, false]

respondido 08 nov., 11:14

¡Gracias Ray! Eso era lo que estaba buscando :) - verduras

También es generalmente una mala forma de usar == false or ==true. Es un booleano, solo di algo como unless method or if ! method - DGM

¡Oh, no, me tienes! Lo he criticado miles de veces. Debe ... cambiar ... responder ... - Ray Toal

También puedo sugerirle a @verdure que busque en la clase Enumerable, como métodos como any? podría ser una mejor opción que each. - Iain

Deberías usar una cadena en la comparación:

...
raise if (methods == "false") {
...

Ruby tiene objetos verdaderos para todos y para todo, por lo que hay una diferencia entre la cadena con el valor "false" y el valor booleano false.

respondido 08 nov., 11:13

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.