2017-08-09 2 views
-2

Ich möchte eine benutzerdefinierte Ausnahme hinzufügen, um die name zu validieren. Das ist name sollte nur akzeptiert [a-zA-Z]. Wenn der Name ungültig ist, muss der Benutzer erneut eingeben. Hilf mir, das umzusetzen.Benutzerdefinierte Ausnahme für die Namensvalidierung

public class EmployeeInfo { 
static int next_id = 0; 
int id; 
static String name; 
Date DoB, DoJ; 

public void setName(final String name) { 
    this.id = ++EmployeeInfo1.next_id; 
    this.name = name; 
} 

public void setDateOfBirth(final Date DoB) { 
    this.DoB = DoB; 
} 

public void setDateOfJoining(final Date DoJ) { 
    this.DoJ = DoJ; 
} 

void print() { 
    System.out.println("User ID: " + id); 
    System.out.println("Name: " + name); 
    System.out.println("Date Of Birth: " + DoB); 
    System.out.println("Date of Joining: " + DoJ); 
} 

public static Date checkDate(final String dt) throws ParseException { 

    final SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy"); 
    final SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy"); 
    final SimpleDateFormat sdf3 = new SimpleDateFormat("dd MMMM yyyy"); 

    Date date = null; 

    try { 
     date = (Date) sdf1.parse(dt); 
    } catch (final ParseException e) { 

     try { 
      date = (Date) sdf2.parse(dt); 
     } catch (final ParseException e1) { 

      try { 
       date = (Date) sdf3.parse(dt); 
      } catch (final ParseException e2) { 

       final String invalid = "Invalid Date Format,Re-enter!"; 
       System.out.println(invalid); 
      } 
     } 
    } 
    return date; 
} 




public static void main(final String[] args) throws ParseException { 
    final Scanner scanner = new Scanner(System.in); 
    final EmployeeInfo1 e = new EmployeeInfo1(); 
    System.out.println("Enter the name: "); 
    e.setName(scanner.nextLine()); 
    Date d = null; 
    while (d == null) { 
     System.out.println("Enter the Date Of Birth: "); 
     d = checkDate(scanner.nextLine()); 
    } 
    e.setDateOfBirth(d); 
    d = null; 
    while (d == null) { 
     System.out.println("Enter the Date of Joining: "); 
     d = checkDate(scanner.nextLine()); 
    } 
    e.setDateOfJoining(d); 

    e.print(); 

} 

} 
+0

Welche Art von Hilfe erwarten Sie genau? – Thiagz

+0

mir helfen, eine individuelle Ausnahme hinzuzufügen .. – Tippu

+0

eine benutzerdefinierte Ausnahmeklasse erstellen wie: class AlsCustomException extends Exception { public AlsCustomException (String message) { Super (Nachricht); } } –

Antwort

1

Sie können Ihre eigene Ausnahme definieren, indem Sie Klasse erweitert Exception Klasse

erstellen
class MyCustomException extends Exception 
{ 
    public MyCustomException(String message) 
    { 
    super(message); 
    } 
} 

public void setName(final String name) throws MyCustomException { 
    Pattern r = Pattern.compile("[a-zA-Z]+"); 
    Matcher m = r.matcher(line); 
    if(!m.find()) 
     throw new MyCustomException("Name Not Valid"); 

    this.id = ++EmployeeInfo1.next_id; 
    this.name = name; 
} 
0

können Sie versuchen, org.apache.common.lang.StringUtils Klasse für die Validierung:

System.out.println("Enter the name: "); 
String name = scanner.nextLine(); 
if(!StringUtils.isAlphaSpace(name)){ 
    throw new MyException("Name is not valid"); 
}else{ 
    e.setName(name); 
} 

public class MyException extends Exception{ 
public MyException (String message){ 
super(message); 
} 

} 
+0

Bitte, niemals 'neue Ausnahme werfen '. Sie sollten immer eine spezifischere Unterklasse auswählen. –

+0

erwartet eine andere Methode .. weil ich nicht einmal damit vertraut bin. – Tippu

Verwandte Themen