public void validar() throws InvalidIDException {
		try {
			if(cuit==null) throw new NullPointerException("Null CUIT given");
			if(cuit.toString().length()!=11) throw new IndexOutOfBoundsException("Invalid CUIT length:"+cuit.toString().length()+"must 11 digits");
			sexo = cuit / (long) Math.pow(10, 9);
			dni = cuit / 10 - sexo * (long) Math.pow(10, 8);
			verificador = cuit % 10;
			
			String serie = "2345672345";
			String numero = String.valueOf(sexo) + String.valueOf(dni);
			long suma = 0;
			for (int i = 0; i < 10; i++) {
				suma += (numero.charAt(i)- '0') * (serie.charAt(9 - i) - '0');
			}
			Long digito = 11 - suma % 11;
			digito = digito.equals(11) ? 0 : digito;
			digito = digito.equals(10) ? 9 : digito;
			
			if(!verificador.equals(digito)) throw new InvalidIDException("Invalid CUIT Check digit");
		} catch (IndexOutOfBoundsException e) {
			throw new InvalidIDException("Invalid CUIT",e);
		} catch (NullPointerException e) {
			throw new InvalidIDException("Invalid CUIT",e);
		} catch (Exception e) {
			EsphoraUnhandledException eue = new EsphoraUnhandledException("Unahndled Exception Catched",e);
			throw new InvalidIDException("Invalid CUIT",eue);
		}
	}