我试图为我的方法中的每一个可能的投掷返回一个JOptionePane
消息对话框:
public void add_note(String note) throws FileNotFoundException, IOException, InvalidFormatException{
... content ...
}
有没有办法做到这一点?
答案 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
}
}