2016-05-17 9 views
-1

Was ich tun möchte, ist eine Zahl zwischen 2 bis 60 geben. Wenn die Nummer nicht auf dieses "Leerzeichen" enthält dann wird es eine Ausnahme mit dem Namen InvalidLicenceNumberException .I haben und die Klasse Userinput, aber es funktioniert nicht brauchen, um seine laden ok Mein Haupt:Ausnahme, wie in Try-catch zu verwenden

import java.io.*; 
public class Exercv { 
    public static void main(String[] args) { 
     int ArTh ; 
     ArTh=Vehicle.NumberPos(); 
     try { 
      if(ArTh<2 || ArTh>60){ 
       ArThEx(); 
      } 
     } catch(InvalidLicenceNumberException e){ 
      System.out.println(""+e); 
      throw new InvalidLicenceNumberException ("There is an exception!"); 
     } 
    }   

meiner Klasse Fahrzeug:

public abstract class Vehicle { 
static int user; //for userinput 
    public static int ArTh() { 
     System.out.println("Give number between 2 until 60"); 
     user=UserInput.getInteger(); 
     if(user>=2 && user<=60){ 
      System.out.println(" Possition is : "+ user); 
     } 
     return user; 
    } 

    public static void ArThEx() throws ArithmeticException{ 
     System.err.println("There is an exception"); 
     System.err.println("Positions arent acceptable"); 
    } 
    } 

meiner Klasse Ausnahme:

import java.lang.Exception; 

public class InvalidLicenceNumberExceptio extends MyException { 
    public InvalidLicenceNumberExceptio(String s){ 
     super(s); 
    } 
} 
+0

formatieren Sie bitte Ihren Code. – SomeJavaGuy

+0

ja ich sehe, ich tat es nicht gut tut mir leid. Ich werde –

+0

Dies könnte verknüpft werden, und nützlich: [Wie kann ich eine Ausnahme erstellen, die für int-Bereich, etc ...] (http://stackoverflow.com/questions/15468418/how-can-i-create-eine-ausnahme-das-prüft-auf-int-range-number-type-and-not-a) –

Antwort

0
arbeitet

Sie könnten direkt Ihre Ausnahme, mit so etwas wie diese werfen:

if (user < 2 || user > 60) { 
     throw new InvalidLicenceNumberException("Your number needs to be between 2 and 60"); 
     System.exit(1); 
    } 

Oder es in Ihrer ArThEx Funktion kapseln, die üblich ist ly eine bessere Praxis.

public static void ArThEx() throws InvalidLicenceNumberException { 
    throw new InvalidLicenceNumberException("Your number needs to be between 2 and 60 (you typed " + user + ")"); 
    System.exit(1); 
} 
+0

gibt es 2 verschiedene Möglichkeiten? Wenn ja bei der zweiten Wahl mit der Methode was schreibe ich auf meine main? –

+0

Es gibt tatsächlich 2 verschiedene Möglichkeiten. Am Anfang würde ich es direkt in deine Fahrzeugklasse legen. Für den zweiten, ja, würde ich es in Ihre "Haupt" -Funktion setzen und direkt auf Ihre Reichweite prüfen. –

0

Sie möchten wahrscheinlich etwas wie den folgenden Code.

Beachten Sie, dass es keinen Sinn macht, die Ausnahme von Ihrer Hauptmethode erneut auszulösen, da sie sowieso nichts fangen wird. So einfach Ihre Nachricht drucken und das Programm beenden lassen (vielleicht einen Exit-Code mit System.exit zwingen)

public static void ArThEx() throws InvalidLicenceNumberException{ 

    System.err.println("There is an exception"); 
    System.err.println("Positions arent acceptable"); 
    throw new InvalidLicenceNumberException("Out of range"); 
} 
+0

Wenn ich gut verstehe, die Methode zu löschen, die ich auf der Klasse erstellen Fahrzeug ArThEx? auch um zu ersetzen, was du mir auf meinem Haupt schreibst? –

+0

Wenn der Zweck dieser Methode nur darin besteht, Dinge zu drucken und eine Ausnahme auszulösen, muss sie nicht in der Klasse "Fahrzeug" sein. Es kann eine Methode Ihrer Hauptklasse sein. – Berger

0

try Ihre ArThEx Methode zu ändern, wie diese, und lassen Sie mich wissen, ob es

public static void ArThEx() throws ArithmeticException{ 
     System.err.println("There is an exception"); 
     System.err.println("Positions arent acceptable"); 
     throw new InvalidLicenceNumberExceptio(); 
    } 
Verwandte Themen