Java
  Home arrow Java arrow Exceptional Class
Dev Shed Forums 
Administration  
Apache  
BrainDump  
DHTML  
Flash  
Java  
JavaScript  
Multimedia  
MySQL  
Oracle  
Perl  
PHP  
Practices  
Python  
Reviews  
Security  
Style-Sheets  
Web Services  
XML  
Zend  
Zope  
Forums Sitemap 
IBM® developerWorks 
Dedicated Servers 
E-Commerce Hosting 
Linux Web Hosting 
Managed Hosting 
Small Business Hosting 
Download TestComplete 
VPS Hosting 
Weekly Newsletter

 
Developer Updates  
Free Website Content 
IBM Developerworks
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
JAVA

Exceptional Class
By: Peter Lavin
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 4 stars4 stars4 stars4 stars4 stars / 19
    2004-08-18

    Table of Contents:
  • Exceptional Class
  • General Comments
  • Parsing the String
  • The Better Way

  • Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
    Iron Speed
     
    ADVERTISEMENT

    A high performance database engine using optimized data access for all development environments including Delphi, Visual Studio .NET, Visual Basic, Visual FoxPro. and more. Learn More

    Exceptional Class
    (Page 1 of 4 )

    When a method throws an exception, Java requires that it be caught. Some exceptions require action on the programmer’s part and others simply need to be reported to the user. The Java class that we will develop in this article is concerned with the latter type of exception. Instead of rewriting code every time you need to catch an exception, you can create a class to do most of the work for you.

    Introduction

    In a previous article, Java Help Files, we discussed how to create a class for displaying help files. Here we will take the same approach to handling exceptions. In some cases, exceptions can be handled quietly in the background without notifying the end user. However, we are concerned with the situations where it makes sense to display error messages.

    The code to do this is not very complicated but gets a bit more interesting when we try to format the way our error message is displayed. We will show a few different approaches to doing this. We might have some fun along the way -– taking different methods out for a spin and seeing how they drive.

    The Code

    Briefly described, this class uses a JOptionPane to display a dialogue box showing the exception type in the title bar and the error message in the body. Error messages created by the Java API are fairly uniform, but there are many occasions when you will use classes created by other programmers –- database drivers for instance. Here you won’t be sure how or if the messages have been formatted. Error strings can end up being very long and may require the insertion of newline characters in order to display properly. We will develop three different methods of doing this, but for the moment have a quick look at the code below.

     
       1:////////////////////////////////////////////////////////
       2://ErrorDialogue class
       3:////////////////////////////////////////////////////////
       4://comments for javadoc below
       5:/** class ErrorDialogue
       6:* This class is for use in catch clauses. It will display
       7:* a dialogue box showing the error message.
       8:*/
       9://put imports here
      10:import javax.swing.*;
      11:import java.awt.*;
      12:import java.util.*;
      13:
      14:public class ErrorDialogue{
      15://data members
      16:private Component window;
      17:private final int increment = 30;
      18:////////////////////////////////////////////////////////
      19://constructors
      20:////////////////////////////////////////////////////////
      21:public ErrorDialogue(Exception e, Component window) {
      22:    this.window = window;
      23:    doDialogue(e);
      24:}
      25://end constructors
      26:////////////////////////////////////////////////////////
      27://private functions
      28:////////////////////////////////////////////////////////
      29:private void doDialogue(Exception e) {
      30:    Class error = e.getClass();
      31:    String errname = error.getName();
      32:    String message=e.getMessage();
      33:    String messagetwo = e.getMessage();
      34:    //check if contains newline
      35:    if (e.getMessage().indexOf('\n') == -1) {
      36:        //find length
      37:        int length = message.length();
      38:        //break at intervals 
      39:        if (length > increment){
      40:            message=quickAndDirty(message);
      41:            messagetwo=insertNewline(messagetwo);
      42:        }
      43:    }
      44:    JOptionPane.showMessageDialog(window, "Error - " + message,
      45:        errname, JOptionPane.WARNING_MESSAGE);
      46:    JOptionPane.showMessageDialog(window, "Error - " + messagetwo,
      47:        errname, JOptionPane.ERROR_MESSAGE);
      48:
      49:
      50:}
      51:////////////////////////////////////////////////////////
      52:/**
      53:* First method of parsing the string
      54:*/
      55:private String quickAndDirty(String message){
      56:    //find space closest to midpoint
      57:    StringBuffer sb= new StringBuffer(message);
      58:    Character space=new Character(' ');
      59:    int strlength = message.length();
      60:    int midpoint = strlength/2;
      61:    for(int x= midpoint; x < strlength; x++){
      62:        if(new Character(sb.charAt(x)).equals(space)){
      63:            sb.insert(x,"\n");
      64:            break;
      65:        }
      66:    }
      67:    String newstring = new String(sb);
      68:    return newstring;
      69:}
      70:///////////////////////////////////////////////////////// 
      71:/**
      72:* second method of parsing the string
      73:*/
      74:private String insertNewline(String message){
      75:    String tail = "";
      76:    String head = "";
      77:    int newstart=29;
      78:    int breakpoint=0;
      79:    tail = message.substring(newstart);
      80:    int length=message.length();
      81:    head = message.substring(0,newstart);
      82:    while(length>increment && tail.indexOf(" ")!=-1){
      83:        //find next space, insert break and concatenate
      84:        breakpoint = tail.indexOf(" ")+1;
      85:        head += tail.substring(0,breakpoint);
      86:        head += "\n";
      87:        tail=tail.substring(breakpoint);
      88:        length=tail.length();
      89:        if (length > increment && tail.indexOf(" ",newstart)!=-1){
      90:            head+=tail.substring(0,newstart);
      91:            tail=tail.substring(newstart);
      92:        }else{
      93:            head+=tail;
      94:            message = head;
      95:            break;
      96:        }
      97:    }
      98:    return message;
      99:}
    100:////////////////////////////////////////////////////////
    101:/**
    102:* Third method of parsing the string
    103:*/
    104:private String insertNewlineToken(String message){
    105:    StringTokenizer stk = new StringTokenizer(message, " ", true);
    106:    String temp = "";
    107:    String newstring = "";
    108:    int maxlength = increment;
    109:    while(stk.hasMoreTokens()){
    110:        temp = stk.nextToken();
    111:        newstring += temp;
    112:        //add newline if longer and don't start with a space
    113:        if (newstring.length() > maxlength && temp.equals(" ")){
    114:            newstring += "\n";
    115:            maxlength = newstring.length() + increment;
    116:        }
    117:    }
    118:    return newstring;
    119:}
    120:public static void main (String [] args){
    121:    String message = "Let's have a really long message here";
    122:    message+=" so that we can test our class. ";
    123:    message+="Blah blah blah blah ...";
    124:    Exception e = new Exception(message);
    125:    new ErrorDialogue(e, null);
    126:    System.exit(0);
    127:}
    128:}//end class

    More Java Articles
    More By Peter Lavin


       · >When a method throws an exception, Java requires that it be caughtI could not...
       · >Please go and read a book.Such as?
       · Hi, you reminded me of an exception management class that I've done in a project...
       · The requirement to catch exceptions is enforced by the compiler. It is a built-in...
       · Actually, you don't have to catch an exception. You can pass it up the chain until...
     

       

    JAVA ARTICLES

    - Introducing the Spring Framework
    - Java Classes
    - Completing the Syntactic Comparison of Java ...
    - Syntactic Comparison of Java and C/C++
    - Java Statements
    - Conditionals, Expressions and Other Java Ope...
    - Java Operators
    - Primitive Data Types and Basic Language Rule...
    - Java and Object-Oriented Programming
    - Java Beginning Programming
    - Gaming Development Setup
    - Using RPC-Style Web Services with J2EE
    - Integrating XML with J2EE
    - Taming Tiger: Concurrent Collections
    - Combating the ‘Object Crisis’

    Iron Speed



    © 2003-2008 by Developer Shed. All rights reserved. DS Cluster 3 hosted by Hostway