Помогите разобраться, что здесь не так, почему по таймауту отваливается?
package com.javarush.task.task17.task1711;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/*
CRUD 2
*/
public class Solution {
public static SimpleDateFormat data = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
public static SimpleDateFormat vdata = new SimpleDateFormat("dd-MMM-YYYY", Locale.ENGLISH);
public static volatile List<Person> allPeople = new ArrayList<Person>();
static {
allPeople.add(Person.createMale("Иванов Иван", new Date())); //сегодня родился id=0
allPeople.add(Person.createMale("Петров Петр", new Date())); //сегодня родился id=1
}
public static void main(String[] args) {
//start here - начни тут
switch (args[0]){
case "-c":
synchronized (allPeople) {
create(args);
}
break;
case "-u":
synchronized (allPeople) {
update(args);
}
break;
case "-d":
synchronized (allPeople) {
delete(args);
}
break;
case "-i":
synchronized (allPeople) {
info(args);
}
break;
}
}
public static void create(String[] args){
int c = args.length;
Person person = null;
try {
for (int i=1; i<=c+1;) {
Date d = data.parse(args[i+2]);
if (args[i+1].equals("м")) {
person = Person.createMale(args[i], d);
allPeople.add(person);
} else if (args[i+1].equals("ж")) {
person = Person.createMale(args[i], d);
allPeople.add(person);
}
i=i+3;
System.out.println(allPeople.lastIndexOf(person));
}
}
catch (Exception e){
}
}
public static void update(String[] args){
int c = args.length;
try {
for (int i=1; i<c+1;){
allPeople.get(Integer.parseInt(args[i])).setName(args[i+1]);
allPeople.get(Integer.parseInt(args[i])).setSex(args[i+2].equals("м")? Sex.MALE : Sex.FEMALE);
allPeople.get(Integer.parseInt(args[i])).setBirthDate(data.parse(args[i+3]));
i=i+4;
}
}
catch (Exception e){
}
}
public static void delete(String[] args){
int c = args.length;
try {
for (int i=1; i<c+1;){
allPeople.get(Integer.parseInt(args[i])).setBirthDate(null);
allPeople.get(Integer.parseInt(args[i])).setName(null);
allPeople.get(Integer.parseInt(args[i])).setSex(null);
}
}
catch (Exception e){
}
}
public static void info(String[] args){
int c = args.length;
try {
for (int i=1; i<c+1; i++){
String name = allPeople.get(Integer.parseInt(args[i])).getName();
String sex = allPeople.get(Integer.parseInt(args[i])).getSex().equals(Sex.MALE)? "м": "ж";
Date date = allPeople.get(Integer.parseInt(args[i])).getBirthDate();
String vd = vdata.format(date);
System.out.println(name + " " + sex + " " + vd);
}
}
catch (Exception e){
}
}
}