如何在方法上指定消息"抛出"在Java?

时间:2014-06-06 15:44:47

标签: java exception throws

我试图为我的方法中的每一个可能的投掷返回一个JOptionePane消息对话框:

public void add_note(String note) throws FileNotFoundException, IOException, InvalidFormatException{
    ... content ...
}

有没有办法做到这一点?

6 个答案:

答案 0 :(得分:1)

您可以尝试以下方式:

public void add_note(String note) throws FileNotFoundException, IOException, InvalidFormatException
{
    try
    {
          ...content...
    }
    catch(FileNotFoundException fnfEx)
    {
       throw new FileNotFoundException("File was not found");
    }
    catch(IOException ioEx)
    {
       throw new FileNotFoundException("I/O exception");
    }
    catch(InvalidFormatException invEx)
    {
       throw new FileNotFoundException("Invalid format errror");
    }
}

在新异常中放置所需消息的位置,并在JOptionPane中打印异常消息。

答案 1 :(得分:0)

使用Try-Catch,您可以捕获任何异常,并在发生异常时返回一些内容。您应该为所有情况执行此操作。

   public void add_note(String note){

       try {
           //code
       } catch (FileNotFoundException e) {
           //return something
       }
    }

答案 2 :(得分:0)

将你的代码包装在try catch中。每个异常类型的内部catch块抛出特定于每个异常的消息

答案 3 :(得分:0)

不是抛出异常,而是在方法中单独处理:

public JOptionPane add_note(String note) {
    try {
        ...
    } catch (FileNotFoundException fnfe) {
        return ...;
    } catch (IOException ioe) {
        return ...;
    } catch (InvalidFormatException ife) {
        return ...;
    }
}

答案 4 :(得分:0)

我建议你采用另一种方法,因为没有人提到它。 我使用AOP捕获这些异常并向最终用户显示。您将编写一个简单的方面,并且不要使用try和catch块来破坏您的代码。

以下是此类方面的一个示例

@Aspect
public class ErrorInterceptor{
@AfterThrowing(pointcut = "execution(* com.mycompany.package..* (..))", throwing = "exception")
public void errorInterceptor(Exception exception) {
    if (logger.isDebugEnabled()) {
        logger.debug("Error Message Interceptor started");
    }

    // DO SOMETHING HERE WITH EXCEPTION
    logger.debug( exception.getCause().getMessage());


    if (logger.isDebugEnabled()) {
        logger.debug("Error Message Interceptor finished.");
    }
}
}

如果你不知道面向方面编程肯定会去看看,这是非常强大的概念(就像OOP一样),花一些时间来学习它。

答案 5 :(得分:0)

如果要显示带有 JOptionPane.showMessageDialog 的对话框,请执行以下操作:

public void add_note(String note){

   try {
       //code
   } catch (FileNotFoundException | IOException | InvalidFormatException e) {
       JOptionPane.showMessageDialog(frame, e.getMessage(), "Title", JOptionPane.ERROR_MESSAGE);
       //manage the exception here
   }
}