Ausnahmebehandlung

Status
Nicht offen für weitere Antworten.

Mela2080

Mitglied
Kann mir vielleicht jemand helfen bei diesen Quellcode die Ausnahmebehandlung so zu schreiben, das wenn ich was anderes außer 0,1,2 eine Exception bekommen. Klappt irgendwie nicht so ganz. :bahnhof:

Code:
public class DreierSystem {

	public static void main(String[] args) {
		
		String zk= Terminal.getString("Bitte geben Sie eine Zahl mit den" +
				" Zahlen 0,1,2 ein: ");
		Terminal.put("Die gewünschte Zahl im 3er System: "+parseIntBase3(zk));
	
		
		
	}
	
		public static int parseIntBase3(String zk) throws NoNameException
		{
		
		int zahl=0;
		for(int i=0;i<zk.length();i++)
		{
			zahl*=3;
			try
			{
			char c=zk.charAt(i);
		
			switch (c)
			{
			case'0':zahl+=0;
			break;
			case'1':zahl+=1;
			break;
			case'2':zahl+=2;
			break;
			}
			}
			catch(NoNameException ex)
			{
				System.out.println("Bätsch falsch");
			
			}
			}
		 return zahl;
		}
		}

Es werden oben der Methodenaufruf unterringelt, und alles in den Klammern beim catch Block
 
B

Beni

Gast
Schreib kein try-catch-Block hin, sondern ein "throw new NoNameException(...);" Das verschiesst eine neue Exception, die du dann an einer anderen Stelle abfangen solltest (oder auch nicht, und das Progi abstürzen lässt).
 

Sky

Top Contributor
Versuch doch mal folgendes:
Code:
         switch (c) {
           case'0':zahl+=0;
           break;
      
           case'1':zahl+=1;
           break;

           case'2':zahl+=2;
           break;

           default: throw new NoNameException("Falsche Ziffer!");
         }

Nun wird die Exception immer dann geworfen, wenn nicht eine der 'case'-Anweisungen erfüllt ist.
 

Dreezard

Bekanntes Mitglied
Also ich weiß nicht warum in diesem Fall eine Exception ausgeworfen werden sollte. Ich meine, Exceptions sind wie der name schon sagt Ausnahmen und sollten auch nur für diese verwendet werden. Du kannst in der default-Anweisung darauf reagieren, dass eine falsche Eingabe getätigt wurde und/oder zu diesem Zweck eine Methode schreiben/aufrufen. Aber warum gleich eine Excpetion?
 

Bleiglanz

Gesperrter Benutzer
wenn schon, dann solltest du eine IllegalArgumentException werfen

aber weil das ganze "vermeidbar" ist, würde ich zusätzlich vor dem Aufruf prüfen, ob OK
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben