-2

我一直在使用 catch,现在我必须使用 throw。这就是我得到的,我无法弄清楚缺少什么以便它可以工作。

public static void main(String args[]){

     Exception_Tester et = new Exception_Tester();   

     int x1;
     int x2;

     x1=5;
     x2=0;


     et.printResults(x1,x2);


    }
    static void printResults(int a, int b) throws ArithmeticException  {

     System.out.println("Add: "+(a+b));
     System.out.println("Sub: "+(a-b));
     System.out.println("Mul: "+(a*b));
     System.out.println("Div: "+(a/b));


    }
4

4 回答 4

0

在 try 语句中尝试将 (a/b) 括起来。然后,在 catch 中,抛出异常。

于 2014-05-03T16:04:09.477 回答
0

您的 printResults 方法声明它可能会抛出 ArithmeticException 类型的异常。为了发生这种情况,方法内部需要出错,例如,如果您的 b 参数为零,则会引发异常。如果你想明确地抛出异常,你需要在你的方法中使用这样的 throw 语句

throw new ArithmeticException();
于 2014-05-03T16:04:51.570 回答
0

在捕获异常之前。您的代码必须首先抛出异常。有时会出现运行时异常,这是代码本身抛出的。但有时您需要在某些条件得到时抛出自定义异常true。为此,您使用此throw关键字并为您的代码抛出异常以捕获它。

这是一个示例

public Object pop() {
    Object obj;

    if (size == 0) {
        throw new EmptyStackException();
    }

    obj = objectAt(size - 1);
    setObjectAt(size - 1, null);
    size--;
    return obj;
}

它会自定义抛出异常,然后您可以捕获它。

虽然如果堆栈为零。它可能不会抛出该异常。所以你自己让代码自己抛出那个异常,然后在某个地方处理它。为此,您将使用try { } catch { }.

有关更多信息:http: //docs.oracle.com/javase/tutorial/essential/exceptions/throwing.html

于 2014-05-03T16:06:28.603 回答
0

创建一个自定义异常类并从您认为可能发生的任何地方抛出异常。

 public class MyException extends Exception {
      public MyException(String message) {
      super(message);
     }
 }

例如在您的方法中的除法操作。你可以像这样使用它..

  static void printResults(int a, int b){

     if(b == 0 ) {
    throw new MyException("Division by Zero"); 
     } else {
     System.out.println("Div: "+(a/b));
     }


    }
于 2014-05-03T17:14:15.587 回答