我编写了一个Java类,如果提供了错误的输入,则抛出异常。
我已经编写了一个主程序,我希望如果我的类调用抛出异常,那么我的主类不应该显示抛出的错误消息,而是应该显示"发生错误"字符串。
我的主要节目:
public class TestAbstractFunction {
public static void main(String[] args) {
// TODO Auto-generated method stub
AbstractFunction l = new LogFunction();
System.out.print(l+" = ");
System.out.println(l.eval(2));
AbstractFunction si = new SineFunction();
System.out.print(si+" = ");
System.out.println(si.eval(60));
AbstractFunction c1 = null;
for(double i=-10;i<=10;){
try{
c1 = new CompositeFunction(si,l);
}catch(Exception e){
System.out.println("Err");
}
System.out.print(c1+" = ");
double value = c1.eval(i);
value = value + s.eval(i);
System.out.println("f(x) = "+value);
i = i+0.5;
}
}
LogFunction中抛出非法参数异常的Java类的方法:
// concrete implementation of eval for computing square root
@Override public double eval(double x) throws IllegalArgumentException {
if (x < 0) throw new IllegalArgumentException("Log of negative number is undefined.");
return Math.log10(x);
}
现在我试图在我的main方法中捕获此异常。我已经使用try catch来执行此操作,但编译器只显示非法参数异常而不是我的catch字符串。
感谢您对我可能做错的宝贵意见。
谢谢!
答案 0 :(得分:1)
哟可以把你的代码放在这个
for(double i=-10;i<=10;){
try{
c1 = new CompositeFunction(si,l);
System.out.print(c1+" = ");
double value = c1.eval(i);
value = value + s.eval(i);
System.out.println("f(x) = "+value);
i = i+0.5;
}catch(Exception e){
System.out.println(e.getMessage());
}
}