添加用户定义的异常和异常处理程序

时间:2016-03-05 09:31:20

标签: java exception-handling fibonacci

我已经获得了一个名为Fibonacci Number的程序,当程序的输入为负整数值时,没有输出。我尝试通过添加用户定义的异常和异常处理程序来修改它,以便在输入为负整数值时可以采取适当的操作。我仍然无法理解异常如何工作以及如何修改此程序。

  Use as below in your google map script

  //content = anything you like to show
  var content = '<div id="content" align="center">'+          
              '<h1 id="firstHeading" class="firstHeading" style="margin:0;color:#ff6600;">Your Title</h1>'+ 
              '<p style="color:#0d6585;font-weight:700;">Your Description'+
              '</p>'+
              '</div>';
  var infowindow = new google.maps.InfoWindow({
     content: content,
     maxWidth: 300 //your desired width
  }); 

1 个答案:

答案 0 :(得分:0)

我会用外行的话来解释这个问题,因为你是Java的新手。这就是你如何修改你的程序来计算斐波纳契数。首先,您说要使用异常来控制程序的行为,以便让用户知道出现了问题。抛出异常时,该异常将传播到调用者层次结构,直到它被一个显式异常处理程序捕获,如果找不到捕获它的处理程序,程序就会退出。

在这种情况下,您希望抛出一个错误,以便下面的应用程序代码在异常处理程序捕获之前不会执行。

if (N < 0) {
  throw new IllegalArgumentException("Negative numbers are not allowed");
}

这会抛出一个IllegalArgumentException,并带有一条自定义消息,如果需要,可以显示给用户。

现在我说这个异常必须在异常处理程序中捕获。由于您抛出此异常,因此不会执行紧随其后的代码。换句话说,如果您将代码段置于上面的代码之上,则不会执行以下代码。

System.out.println(N);
for (int i = 1; i <= N; i++)
  System.out.println(i + ": " + fib(i));

现在您需要一个异常处理程序,否则您的程序将过早退出。 这是将它包含在try catch处理程序中的方法,

int N = Integer.parseInt(args[0]);
try {
   if (N < 0) {
     throw new IllegalArgumentException("Negative numbers are not allowed");
   }
   System.out.println(N);
   for (int i = 1; i <= N; i++) {
      System.out.println(i + ": " + fib(i));
   }
 } catch (IllegalArgumentException e) {
    System.out.println(e.getMessage());
 }

有了这个,当用户输入一个负数时,程序将在我们创建的异常中显示该消息。当输入为负数时,您可能希望通过引发异常来执行其他操作,但您应该能够理解它是如何完成的。您可能还希望使用自定义异常,而不是Java平台提供的标准异常。有很多tutorials用于学习自定义异常处理。