如何捕获方法java类抛出的异常

时间:2015-10-29 18:20:30

标签: java exception-handling

我编写了一个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字符串。

感谢您对我可能做错的宝贵意见。

谢谢!

1 个答案:

答案 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());
        }

    }