所以我不确定为什么在尝试使用按钮的动作侦听器调用方法时出现错误。我创建了面板并将布局设置为流布局,然后将其添加到内容窗格,然后在此处创建了按钮...
JButton buyButton = new JButton("Buy");
panel.add(buyButton);
buyButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {buy();}});
然后我在buy方法中创建了一个try catch块...
public void buy throws OverException
{
try{
//tries the code
}
catch(OverException e){
//does stuff...
}
}
但它一直说在创建按钮时必须捕获或声明在调用buy()的方法中抛出它。
答案 0 :(得分:1)
编译器清楚地告诉你这样做:... must be caught or declared to be thrown in the method calling of buy()
。
OverException
必须被actionPerformed
捕获,或者actionPerformed
必须被声明为OverException
。
您无法更改actionPerformed
的声明,因此请抓住异常:
buyButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try {
buy();
}
catch(OverException ex)
{
// TODO error handling
}
}
});
答案 1 :(得分:1)
您已添加新的ActionListener()作为内部类,实现方法是actionPerformed()。你在actionPerformed()中调用了buy()。除了你的代码,你可以吐出“OVerException”。因此,您可以通过两种方式处理此异常:
public void buy throws OverException
。但是调用方法(actionPerformed())没有处理它。所以你得到了编译错误方式1:
buyButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {buy();}});
public void buy()
{
try{
//tries the code
}
catch(OverException e){
//does stuff...
}
}
方式2由@ john3136 提出