Social networks
You can find me on:
   
Open sharing content

These articles are available under Creative Commons license BY-SA-3.0

Posts Tagged ‘debug’

For testing and debugging purposes you can enable the assertions evaluation with the VM parameter “-ea” ( or “-enableassertions” if you prefer the whole thing).

The assertions remain in the code and are just ignored at runtime if you don´t enable them. You can think of them as an aid in case of need.

The following method throws an exception if the parameter given is not a String containing “Laura”:


         private void testFirstName(String firstName){
                 assert(firstName.equals("Laura"));

               System.out.println("The given first name is Laura");
         }

A string message can be displayed in the stack trace, by adding a second expression to the assertion, like :

	private void testFirstName(String firstName){
		assert(firstName.equals("Laura")) : "the name "+ firstName+ " is not Laura!";
		
		System.out.println("The given first name is Laura");
	}

The output in this second case would be something like:

Exception in thread "main" java.lang.AssertionError: the name Anna is not Laura!
at com.demo.AssertionsDemo.testFirstName(AssertionsDemo.java:15)
at com.demo.AssertionsDemo.main(AssertionsDemo.java:8)

Since Java 1.4 “assert” has become a keyword.

Assertions can be disabled with the VM option “-da” or “-disableassertions”. Although the assertions are disabled by default, the manual disabling might make sense if you don´t want to enable the assertions for all the classes.

For example if you want to run a java jar file (for example “demo.jar”), but disabling the assertions for one of its classes (ex. “com.demo.Demo.java”) you need to use the following parameters:

> java -jar -ea -da:com.demo.Demo

To disable them for the whole “com.demo” package (including subpackages):

> java -jar -ea -da:com.demo...

So entering VM parameters like “-ea:” or “-ea:” allow you to select which assertions to evaluate.