ErrorHandlingTest Class

From AgileApps Support Wiki

This class explores a variety of error-handling conditions to determine what occurs, and when.

<syntaxhighlight lang="java" enclose="div">

package com.platform.acme.test;

import com.platform.api.*;

public class ErrorHandlingTest {

 static int N = 0;
 
 /**
  * Invoke this method from a macro to run a selected test.
  */
 public void runTests(Parameters p) throws Exception
 {
    test16();
 }
 
 // Results of the tests:
 //   1. Nothing appears in the debug log unless you put it there. 
 //      The unit test framework does. But errors by themselves do not.
 //   2. Standard Java Exceptions do not produce a message.
 //      To generate one, catch standard Exceptions and call throwError().)
 //   2. Exception messages are invisible to the user unless generated using
 //      "Functions.throwError(msg)" or "throw new Exception(msg)" 
 //      Those two are equivalent--but only throwError() requires a string argument.
 //   3. With either of them, the last one called is the ONLY message the user sees.
 //   4. If neither is called, then ALL showMessage() items are seen, in a 
 //      concatenated string.
 //   5. A message is usually displayed in a popup. 
 //      (In some cases, it appears at the top of the page.)
 //   6. If an exception has no message, no popup appears: "throw new Exception()"
 public void test16() throws Exception
 {
   N = 16;
   Functions.throwError("");
   // THE USER SEES AN EMPTY DIALOG WITH THE TITLE, "Error".
 }
 public void test15() throws Exception
 {
   N = 15;
   try {
     throwStandardJavaException();
   } catch (Exception e) {
     throw e;
   } 
   // THE USER SEES NOTHING.
 }
 public void test14() throws Exception
 {
   N = 14;
   try {
     throwAnError();
   } catch (Exception e) {
     throw e;
   } 
   // THE USER SEES THE throwError() MESSAGE.
 }
 public void test13() throws Exception
 {
   N = 13;
   try {
     throwCustomException();
   } catch (Exception e) {
     Functions.throwError("Test"+N+": Replacement message");
   } 
   // THE USER SEES THE REPLACEMENT MESSAGE.
 }
 public void test12() throws Exception
 {
   N = 12;
   try {
     throwCustomException();
   } catch (Exception e) {
     throw e;
   } 
   // THE USER SEES THE ORIGINAL EXCEPTION MESSAGE.
 }
 public void test11() throws Exception
 {
   N = 11;
   try {
     throwCustomException();
   } catch (Exception e) {
     // do nothing
   } 
   // THE USER SEES NOTHING.
 }
 public void test10() throws Exception
 {
   N = 10;
   Functions.showMessage("Test "+N+" -- msg part 1
"); throw new Exception("Test "+N+" -- throwError"); // THE USER SEES A POPUP WITH THE EXCEPTION. showMessage text is NOT seen. }
 public void test9() throws Exception
 {
   N = 9;
   Functions.showMessage("Test "+N+" -- msg part 1
"); Functions.throwError("Test "+N+" -- throwError"); // THE USER SEES A POPUP WITH THE ERROR. showMessage text is NOT seen. } public void test8() throws Exception { N = 8; Functions.showMessage("Test "+N+" -- part 1
"); showAMessage(); // THE USER SEES A POPUP WITH BOTH MESSAGES CONCATENATED. } public void test7() throws Exception { N = 7; Functions.showMessage("Test "+N+" -- part 1
"); Functions.showMessage("Test "+N+" -- part 2"); // THE USER SEES A POPUP WITH BOTH MESSAGES CONCATENATED. }
 public void test6() throws Exception
 {
   N = 6;
   throwAnError();
   // THE USER SEES POPUP WITH THE MESSAGE. THE DEBUG LOG SHOWS NOTHING.
 }
 public void test5() throws Exception
 {
   N = 5;
   Functions.throwError("Test "+ N);
   // THE USER SEES POPUP WITH THE MESSAGE. THE DEBUG LOG SHOWS NOTHING.
 }
 public void test4() throws Exception
 {
   N = 4;
   throwStandardJavaException();
   // THE USER SEES NOTHING THE DEBUG LOG SHOWS NOTHING.
 }
 public void test3() throws Exception
 {
   N = 3;
   throw new ArrayIndexOutOfBoundsException();
   // THE USER SEES NOTHING THE DEBUG LOG SHOWS NOTHING.
 }
 public void test2() throws Exception
 {
   N = 2;
   throwCustomException();
   // THE USER SEES POPUP WITH CUSTOM MESSAGE. THE DEBUG LOG SHOWS NOTHING.
   // (If there is no message, the popup is not displayed.)
 }
 public void test1() throws Exception
 {
   N = 1;
   throw new Exception("Test Exception");
   // THE USER SEES POPUP WITH CUSTOM MESSAGE. THE DEBUG LOG SHOWS NOTHING.
   // (If there is no message, the popup is not displayed.)
 }
 //*************************************************************************
 // UTILITY METHODS
 public void throwCustomException() throws Exception {
   // Throw an exception with an customized message
   throw new Exception("Test "+N+": Exception");
 }
 
 public void throwStandardJavaException() throws Exception { 
   // Throw a standard Java exception
   throw new ArrayIndexOutOfBoundsException();
 }
 public void throwStandardExceptionWithMessage() throws Exception { 
   // Throw a standard Java exception that includes a message
   throw new ArrayIndexOutOfBoundsException("IO Exception");
 }
 public void throwAnError() throws Exception {
   // Call the error method
   Functions.throwError("Test "+N+": throwError");
 }
 
 public void showAMessage() throws Exception{
   // Call the error method
     Functions.showMessage("Test "+N+" -- part 2");
 }
 

} </syntaxhighlight>