Duvida assert

Folks,

o que estou fazendo de errado ao executar o codigo

abaixo

botão direito em cima da classe :

  • Run as
    • Open Run Dialog

      • Arguments -source 1.4
      • VM Arguments -ea

      está certo o que estou fazendo …

      abs


public class MoreAsserts {

	static int x = 5;
	    public static void main(String [] args) {
	    	System.out.println("exemplo...");
	      assert(doStuff(42));
	      if(x < 40) ;
	      else assert(false);    
	    }
	    public static boolean  doStuff(int arg) { 
	      assert(arg < x++); 
	     return false; 
	   }


}


execução:

exemplo...
Exception in thread "main" java.lang.AssertionError
	at br.com.cert.provascjp.MoreAsserts.doStuff(MoreAsserts.java:13)
	at br.com.cert.provascjp.MoreAsserts.main(MoreAsserts.java:8)

Cara,

Acho que está tudo ok! vc habilitou assertions e está dando o erro!

Folks,

o codigo abaixo não deveria imprimir

a mensagem do metodo teste1…

não sai nada e não da erro …

o que pode ser…

	
	   public static void main(String[] args) {

	     assert teste(): teste1();
	   }
			
	   public static boolean teste(){
	      return true;
	   }
		
	   public static String teste1(){
		      System.out.println("Mensagem");
		      return null;
		   }

Acho que vc está confundindo assert com operador ternário…

é ao contrário, somente se retornar false em teste() vc vai executar teste1().

dê uma olhada nesse doc da sun: http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html

fiz isso mas a mesma coisa não imprimi …o que será??? então


	   public static void main(String[] args) {
	     assert teste(): teste1();
	   }
			
	   public static boolean teste(){
	      return false;
	   }
		
	   public static String teste1(){
		      System.out.println("Mensagem");
		      return null;
		   }

Setou o -ea no VM Settings?

fui fazer em casa com outra versão do Eclipse e funcionou mostrando a mensagem sysout mas me da o erro abaixo

o que está acontecendo …???

como botão direito do mouse na classe:

  • Run AS
  • Open Run Dialog
  • Arguments
    • Program arguments = -source 1.4
    • VM arguments = -ea
 public static void main(String[] args) {  
		     
		      assert teste(): teste1();  
		    }  
		      
		    public static boolean teste(){  
		       return false;  
		    }  
		      
		   public static String teste1(){  
		       System.out.println("Mensagem");  
		       return "Volta";  
		   }  

Mensagem
Exception in thread "main" java.lang.AssertionError: Volta
	at br.com.cert.Acert.main(Acert.java:7)

se assertion return false ele lança uma excecao e executa o que esta depois do :

assert

veja no link acima sobre o funcionamento.

flw!

[quote=paribe]fui fazer em casa com outra versão do Eclipse e funcionou mostrando a mensagem sysout mas me da o erro abaixo

o que está acontecendo …???

como botão direito do mouse na classe:

  • Run AS
  • Open Run Dialog
  • Arguments
    • Program arguments = -source 1.4
    • VM arguments = -ea

[code]
public static void main(String[] args) {

	      assert teste(): teste1();  
	    }  
	      
	    public static boolean teste(){  
	       return false;  
	    }  
	      
	   public static String teste1(){  
	       System.out.println("Mensagem");  
	       return "Volta";  
	   }  

Mensagem
Exception in thread “main” java.lang.AssertionError: Volta
at br.com.cert.Acert.main(Acert.java:7)

[/code][/quote]

assert expression1 : expression2

a expression1 eh um teste booleano e caso retorne false eh lançado um AssertionError, a expression2 eh uma string que sera impresa junto com o erro, para que possa ser identificado o motivo do erro.

no seu primeiro exemplo vc estava retornando null que nao sera impresso nada, no segundo exemplo vc imprime “Mensagem” e retorna “Volta”, seu codigo funcionou corretamente, soh nao entendi qual era a sua intenção, se era imprimir “Mensagem” junto com o assertionError vc tem que alterar seu teste1 para retornar “Mensagem”

Nunca ouvi falar de alguem use asserts na vida real, por que que isso cai na prova da certificacao?

deveria ser usado quando vc tivesse uma situacao de acordo com o objetivo do assert, a questao tb é: qtos progrmadores usam as boas praticas de programacao no ambiente de producao?

Eu uso por exemplo…

flw!