Java 未处理的异常类型异常?
我正在尝试创建一个插件,它接受essentials命令Java 未处理的异常类型异常?,java,bukkit,Java,Bukkit,我正在尝试创建一个插件,它接受essentials命令/item,并为每个项目提供知识 我正在编写的代码还没有知识部分,现在我只专注于重写/item命令,以便编辑它 public class main extends JavaPlugin implements Listener { public static Bukkit plugin; @Override public void onEnable() { Bukkit.getServer().
/item
,并为每个项目提供知识
我正在编写的代码还没有知识部分,现在我只专注于重写/item
命令,以便编辑它
public class main extends JavaPlugin implements Listener {
public static Bukkit plugin;
@Override
public void onEnable()
{
Bukkit.getServer().getPluginManager().registerEvents(this, this);
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_RED + "Enabled!");
}
@Override
public void onDisable()
{
getLogger();
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_RED + "Disabled!");
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("item")) {
Player user = (Player)sender;
if (args.length < 1)
{
user.sendMessage("Not enough arguments");
}
Essentials essentials = (Essentials)getServer().getPluginManager().getPlugin("Essentials");
IItemDb itemDB = essentials.getItemDb();
ItemStack stack = essentials.getItemDb().get(args[0]);
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
try
{
if (args.length > 1 && Integer.parseInt(args[1]) > 0)
{
stack.setAmount(Integer.parseInt(args[1]));
}
}
catch (NumberFormatException e)
{
user.sendMessage("Not enough arguements");
}
if (args.length > 2)
{
MetaItemStack metaStack = new MetaItemStack(stack);
final boolean allowUnsafe = user.hasPermission("essentials.enchantments.allowunsafe");
stack = metaStack.getItemStack();
}
if (stack.getType() == Material.AIR)
{
user.sendMessage("Can not spawn air");
}
final String displayName = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace('_', ' ');
user.sendMessage("Given " + stack.getAmount() + " " + displayName);
if (user.hasPermission("essentials.oversizedstacks"))
{
InventoryWorkaround.addOversizedItems(user.getInventory(), 111, stack);
}
else
{
InventoryWorkaround.addItems(user.getInventory(), stack);
}
user.updateInventory();
return true;
}
return false;
}
}
我得到一个错误:
未处理的异常类型异常
我可以通过重新排列底部大括号来解决这个问题,但是在底部大括号中会出现错误。有人知道发生了什么事吗 这是因为
IItemDb.get(String)
抛出一个选中的异常,而您没有处理该异常。必须处理选中的异常,否则将抛出编译时错误。发件人:
Java编程语言要求程序包含检查异常的处理程序,这些异常可能是由方法或构造函数的执行导致的。对于每个检查的异常(可能的结果),方法的抛出
子句或构造函数必须提到该异常的类或该异常类的超类之一
(强调矿山)
因此,您必须扩展您的方法签名:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) throws Exception
public boolean onCommand(CommandSender、Command cmd、String label、String[]args)在该行中引发异常
ItemStack stack=essentials.getItemDb().get(args[0])代码>可以引发异常
要处理它(这是必须的),您必须用try/catch块围绕这条线
try {
ItemStack stack = essentials.getItemDb().get(args[0]);
} catch(Exception e) {
e.printStackTrace();
}
此外,您可能还想阅读以下内容:是的,任何对Java稍有了解的人都知道发生了什么。请通读一遍。还请注意,SO不是一个教初学者如何编码的网站,而是一个专业和热心程序员的网站——我们希望您了解基础知识,并且有大量的资源来学习它们。在提出进一步的问题之前,先做你自己的研究,只有当你确定自己偶然发现了一个还没有详细记录的问题时,才作为最后手段继续提问。
try {
ItemStack stack = essentials.getItemDb().get(args[0]);
} catch(Exception e) {
e.printStackTrace();
}