110 likes | 248 Vues
This guide explores the intricacies of exception handling in Java, focusing on various abnormal or erroneous situations such as dividing by zero, converting non-numeric strings to numbers, accessing array elements beyond their limits, and dealing with nonexistent files or web pages. It emphasizes the importance of separating exception handling code from normal code for clarity and maintainability. Through practical examples, including BMI calculation and average finding, this guide illustrates effective strategies for managing exceptions and enhancing program stability.
E N D
Exceptions Java API
Exceptions • Exceptions – abnormal or erroneous situations: • Trying to dividing a number by zero • Trying to convert a string containing non-digit character into a number • Trying to access an element of an array past its maximum index • Trying to read a file that does not exist • Trying to access a Web page does not exist
Exception Handler • Exception Handler – code that is executed when an exception is detected • In Java, exception handler portion is clearly separated from the code for normal situations • An exception may be handled within the method where it is found, or in a different section where it is more appropriate
Example: BMI • (weight in pounds)BMI = 703 x --------------------- (height in inches)2 • BMI Table • BMI Page(http://www.cdc.gov/nccdphp/dnpa/bmi/calc-bmi.htm)
Applet to Calculate BMI • ExceptionDemo (with no exception handler) • ExceptionDemo.java source code • Possible Exceptions • double bmi = 703 * pounds / ((inches)*(inches));ArithmeticException • double inches = Double.parseDouble(tfInches.getText());NumberFormatExcepton
Trying and Catching Exceptions public void actionPerformed(ActionEvent e) { if (e.getSource() == btCalculate) { // code for normal case try{ // code section that can cause exceptions } catch(NumberFormatException exc) { // code for exception handler } } • ExceptionDemo2.java source code (with exception handler)
General Form for Exception Handler public void someMethod { // Here, code for normal case . . . try{ // code section that can cause exceptions } catch(NumberFormatException exc) { // code for exception handler } } • ExceptionDemo2.java source code (with exception handler)
Example: Finding an Average • Suppose you have the following code segment: public double aveOfFirstN(int n) { int sum = 0; for (int i = 0; i <= n; i++) sum += i; return sum / n; }
Example: Finding an Average (cont.) • Note that expression sum/n can raise an exception if n==0. The system will output the following message:Excepton in thread "main" java.lang.ArithmeticException: / by zero at AverageTest.aveOfFirstN(AverageTest.java: 6) at AverageTest.main(AverageTest.java: 12)
Example: Finding an Average (cont.) • The following modification checks the value of n before calculating the average. public double aveOfFirstN(int n) { if (n > 0) { int sum = 0; for (int i = 0; i <= n; i++) sum += i; return sum / n; } else return -1.0;}
Example: Finding an Average (cont.) • Note that some special value, -1 in this case, must be returned when n==0. • That means that the method that called the aveOfFirstN() must be aware of the special value. • See AverageTest1 source code. • A more elegant solution is to incorporate an exception handler. • See AverageTest2 source code.