# Eigene Exception Klasse



## Marco_adv (19. Jan 2007)

Hallo, ich habe folgenden code:

```
if (!(databaseUser == null || databaseUser.equals("")
				|| databasePassword == null || databasePassword.equals("")
				|| repositoryUrl == null || repositoryUrl.equals("")
				|| jdbcDriverName == null || jdbcDriverName.equals(""))) {
			try {
				connect = new RepositoryConnection(jdbcDriverName,
						repositoryUrl, databaseUser, databasePassword);
			} catch ( SQLException e) {
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
		}
```

nun soll ich eine Exception Klasse namens RepositoryException schreiben die alle auftretenden Exceptions handelt.

so dass ich danach schreiben kann:


```
if (!(databaseUser == null || databaseUser.equals("")
				|| databasePassword == null || databasePassword.equals("")
				|| repositoryUrl == null || repositoryUrl.equals("")
				|| jdbcDriverName == null || jdbcDriverName.equals(""))) {
			try {
				connect = new RepositoryConnection(jdbcDriverName,
						repositoryUrl, databaseUser, databasePassword);
			} catch ( RepositoryException e) {
				e.printStackTrace();
			} 
}
```

Könnt ihr mir helfen wie die Klasse Repository Exception extends Exception auszusehen hat??

Vielen Dank im voraus Gruß Marco


----------



## WieselAc (19. Jan 2007)

versteh ich nicht ganz das ist doch schon alles was du machen musst eine Klasse "RepositoryException.java" anlegen und die von Exception ableiten, dann baust du dir noch nen Errorstring oder sowas ein und schon hast du was du willst?!


----------



## Marco_adv (22. Jan 2007)

Ja ich habe die Klasse RepositoryException wie folgt geschrieben:

```
public class RepositoryException extends Exception {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public RepositoryException() {
		super();
		JOptionPane.showMessageDialog(null,
			    "Cannot connect to Repository.",
			    "Repository error",
			    JOptionPane.ERROR_MESSAGE);
	}

	public RepositoryException(String ex) {
		super( ex );
		JOptionPane.showMessageDialog(null,
			    "Cannot connect to Repository.",
			    "Repository error",
			    JOptionPane.ERROR_MESSAGE);
	}
}
```

wenn ich diese aber nun aufrufen möchte sagt eclipse dass bei connect nie solch eine exception auftreten kann was nun?


----------



## HLX (22. Jan 2007)

Da hast du was beim Exception-Handling nicht verstanden! Eine Exception wird immer irgendwo geworfen und dann an anderer Stelle abgefangen. 

Beispiel:

```
public void connect() throws RepositoryConnectionException { 
    if (!(databaseUser == null || databaseUser.equals("") 
            || databasePassword == null || databasePassword.equals("") 
            || repositoryUrl == null || repositoryUrl.equals("") 
            || jdbcDriverName == null || jdbcDriverName.equals(""))) { 
         try { 
            connectToDatabase() // fiktive Methode die eine DatenbankVerbindung aufbaut            
         }   
         catch (SqlException e)  // abfangen der von Java vorgegebenen Exception
            throw new RepositoryConnectionException(e); // Behandeln als eigene Exception
         } 
    }
}



public void initialize() {
      try {
            connect();
      }
      catch(RepositoryConectionException ex) {
              ex.printStackTrace();
      }
}
```

Deine Exception muss an irgendeiner Stelle geworfen werden *(throw...)*. Die Methode in der geworfen wird muss als werfend deklariert werde (siehe oben: throws...). Wird die deklarierte Methode aufgerufen ist man dazu angehalten die Ausnahmesituation zu behandeln. Entweder man wirft die Exception wieder weiter oder man fängt sie ab.


----------



## Marco_adv (22. Jan 2007)

Ahh ok verstehe nun sieht das schon anders aus vielen dank für die schnelle und gute Antwort


----------

