Throw syntax error instead of "For input string"

This commit is contained in:
KHobbits 2013-07-14 01:07:59 +01:00
parent a14104c529
commit 29ea24f715
2 changed files with 30 additions and 16 deletions

View file

@ -1,6 +1,7 @@
package com.earth2me.essentials;
import static com.earth2me.essentials.I18n._;
import com.earth2me.essentials.commands.NotEnoughArgumentsException;
import java.io.File;
import java.math.BigDecimal;
import java.util.Locale;
@ -56,7 +57,12 @@ public class Worth implements IConf
if (args.length > 1)
{
amount = Integer.parseInt(args[1].replaceAll("[^0-9]", ""));
try {
amount = Integer.parseInt(args[1].replaceAll("[^0-9]", ""));
}
catch (NumberFormatException ex) {
throw new NotEnoughArgumentsException(ex);
}
if (args[1].startsWith("-"))
{
amount = -amount;

View file

@ -17,18 +17,18 @@ public class Commandworth extends EssentialsCommand
{
super("worth");
}
@Override
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
{
BigDecimal totalWorth = BigDecimal.ZERO;
String type = "";
List<ItemStack> is = ess.getItemDb().getMatching(user, args);
int count = 0;
boolean isBulk = is.size() > 1;
for (ItemStack stack : is)
{
try
@ -45,7 +45,7 @@ public class Commandworth extends EssentialsCommand
}
}
}
}
catch (Exception e)
{
@ -67,7 +67,7 @@ public class Commandworth extends EssentialsCommand
}
}
}
@Override
public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
{
@ -76,12 +76,12 @@ public class Commandworth extends EssentialsCommand
{
throw new NotEnoughArgumentsException();
}
ItemStack stack = ess.getItemDb().get(args[0]);
itemWorth(sender, null, stack, args);
}
private BigDecimal itemWorth(CommandSender sender, User user, ItemStack is, String[] args) throws Exception
{
int amount = 1;
@ -89,23 +89,31 @@ public class Commandworth extends EssentialsCommand
{
if (args.length > 1)
{
amount = Integer.parseInt(args[1].replaceAll("[^0-9]", ""));
try
{
amount = Integer.parseInt(args[1].replaceAll("[^0-9]", ""));
}
catch (NumberFormatException ex)
{
throw new NotEnoughArgumentsException(ex);
}
}
}
else
{
amount = ess.getWorth().getAmount(ess, user, is, args, true);
}
BigDecimal worth = ess.getWorth().getPrice(is);
if (worth == null)
{
throw new Exception(_("itemCannotBeSold"));
}
BigDecimal result = worth.multiply(BigDecimal.valueOf(amount));
sender.sendMessage(is.getDurability() != 0
? _("worthMeta",
is.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", ""),
@ -118,7 +126,7 @@ public class Commandworth extends EssentialsCommand
NumberUtil.displayCurrency(result, ess),
amount,
NumberUtil.displayCurrency(worth, ess)));
return result;
}
}