正如标题所示,我在抛出静态成员类时遇到了一些问题。但我不确定这是否是问题,并且编译器给我提供了我应该做什么的混合信号!我的程序的类和函数都在一个文件中。try/catch不适用于静态成员throwable类?
这是我将Throwable的一个定义(其余基本上是相同的):
private static class ParenthesisException extends Throwable
{
public ParenthesisException(){}
public String strErrMsg()
{
return "ERROR: Every '(' needs a matching ')'";
}
}
我在得到由main
称为一个try/catch里面的成员函数,声明引发此。我将其他Throwable
类放入由try/catch语句中由main
调用的函数调用的函数内。下面是它的一个小部分:
try
{
parseFormula(cin.nextLine());
}
catch(ParenthesisException e)
{
System.out.println(e.strErrMsg());
}
catch(OperatorException e)
{
System.out.println(e.strErrMsg());
}
parseFormula是静态成员函数抛出ParenthesisException
。
编译器说:
为jcalc.ParenthesisException无法到达的catch块。此异常不会从try语句体
抛出,但我做扔它,在这里,在parseFormula:
if(n_lpar != n_rpar)
throw new ParenthesisException();
奇怪的是,当我删除try/catch语句,它告诉我该例外未被捕获。这令我困惑,因为之前,它说ParenthesisException
从未抛出过,现在它说它从来没有被抓到过,但是被抛出了。
我想知道这是否与它们都是静态成员(类和函数)的方式有关,以及我如何解决这个问题。
请格式化你的代码!否则阅读是一种痛苦。 – Wolfcow
@Wolfcow:done @ OP什么是parseFormula的方法签名? – Jacob
@Wolfcow:你能向我解释如何格式化我的代码吗? @cularis:'private static double parseFormula(String formula)' – Uronym