1 / 49

COP3502 Programming Fundamentals for CIS Majors 1

COP3502 Programming Fundamentals for CIS Majors 1. Instructor: Parisa Rashidi. -. Chapter 13 Exceptions Exception handling Declaring exception Throwing exception Catching exception Different types of exceptions Error vs. Exception Checked vs. unchecked Keywords

peggy
Download Presentation

COP3502 Programming Fundamentals for CIS Majors 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. COP3502 Programming Fundamentals for CIS Majors 1 Instructor: Parisa Rashidi

  2. -

  3. Chapter 13 • Exceptions • Exception handling • Declaring exception • Throwing exception • Catching exception • Different types of exceptions • Error vs. Exception • Checked vs. unchecked • Keywords • try, catch, finally • throw, throws

  4. When a program runs into a runtime error, the program terminates abnormally. • How can you handle the runtime error so that the program can continue to run or terminate gracefully?

  5. Exceptions

  6. Show runtime error Quotient Run

  7. Fix it using an if statement QuotientWithIf Run

  8. Bonus Project • Up to 5 extra points • Exam • Cumulative (emphasis on later chapters) • Same format • You can bring a single sided page of notes • No larger than  8.5 x 11 (standard notebook) • Next week • Monday: Exception • Wednesday: Review • Friday: HW Review (by TA) • Course evaluation

  9. Exceptions • Motivation

  10. What if the runtime error occurs in a called method? Run QuotientWithException

  11. The advantagesof using exception handling: • It enables a method to throw an exception to its caller. • Without this capability, a method must handle the exception or • terminate the program. QuotientWithMethod Run

  12. By handling InputMismatchException, your program will continuously read an input until it is correct. InputMismatch Run

  13. Exception Types

  14. “System errors” are thrown by JVM and represented in the Error class. • E.g. Linkage error, VirtualMachineError, … • The Error class describes internal system errors. • Such errors rarely occur. • If one does, there is little you can do beyond notifying the user and trying to terminate the program gracefully.

  15. “Exception” describes errors caused by your program and external circumstances. • E.g. RuntimeException, IOException, ClassNotFoundException, … • These errors can be caught and handled by your program.

  16. “RuntimeException” is caused by programming errors, such as bad casting, accessing an out-of-bounds array, and numeric errors. • E.g. ArithmaticException, NulPointerException, IndexOfBoundException, IllegalArgumentException,…

  17. RuntimeException, Error and their subclasses are known as uncheckedexceptions. • All other exceptions are known as checked exceptions, meaning that • the compiler forces the programmer to check and deal with the exceptions.

  18. In most cases, unchecked exceptions reflect programming logic errors that are not recoverable. • E.g. NullPointerException or IndexOutOfBoundsException • To avoid cumbersome overuse of try-catch blocks, Java does not mandate you to write code to catch unchecked exceptions.

  19. Exception handling process • Declare exception • Throw exception • Catch exception

  20. Every method must state the types of checked exceptions it might throw. • This is known as declaring exceptions.

  21. When the program detects an error, the program can create an instance of an appropriate exception type and throw it. • This is known as throwing an exception.

  22. /** Set a new radius */ public void setRadius(double newRadius) throwsIllegalArgumentException { if (newRadius >= 0) radius = newRadius; else throw new IllegalArgumentException( "Radius cannot be negative"); } • Example

  23. Example

  24. Exception handling example

  25. Exceptions • Used in conjunction with methods • 3 steps • Declare (throws) • Throw (throw) • Catch (try-catch) • Checked vs. unchecked

  26. Java forces you to deal with checked exceptions. • IOException • If a method declares a checked exception you must • invoke it in a try-catch block or • declare to throw the exception in the calling method.

  27. For example, you have to write the code as shown in (a) or (b).

  28. The order in which exceptions are specified in catch blocks is important. • A compile error will result if a catch block for a superclass type appears before a catch block for a subclass type.

  29. This example demonstrates declaring, throwing, and catching exceptions by modifying the setRadius method in the Circleclass. • The new setRadius method throws an exception if radius is negative. TestCircleWithException CircleWithException Run

  30. Rethrwoing exceptions

  31. Occasionally, you may want some code to be executed regardless of whether an exception occurs or is caught.

  32. Suppose no exceptions in the statements try { statements; } catch(TheException ex) { //handling ex; } finally { //finalStatements; } //Next statement ..

  33. try { statements; } catch(TheException ex) { //handling ex; } finally { //finalStatements; } //Next statement .. The final block is always executed

  34. try { statements; } catch(TheException ex) { //handling ex; } finally { //finalStatements; } //Next statement .. Next statement in the method is executed

  35. try { statement1; statement2; statement3; } catch(Exception1 ex1) { //handling ex1; } catch(Exception2 ex2) { //handling ex2; throw x } finally { //finalStatements; } //Next statement .. Suppose an exception of type Exception1 is thrown in statement2

  36. try { statement1; statement2; statement3; } catch(Exception1 ex1) { //handling ex1; } catch(Exception2 ex2) { //handling ex2; throw x } finally { //finalStatements; } //Next statement .. The exception is handled.

  37. try { statement1; statement2; statement3; } catch(Exception1 ex1) { //handling ex1; } catch(Exception2 ex2) { //handling ex2; throw x } finally { //finalStatements; } //Next statement .. The final block is always executed.

  38. try { statement1; statement2; statement3; } catch(Exception1 ex1) { //handling ex1; } catch(Exception2 ex2) { //handling ex2; throw x } finally { //finalStatements; } //Next statement .. The next statement in the method is now executed.

  39. try { statement1; statement2; statement3; } catch(Exception1 ex1) { //handling ex1; } catch(Exception2 ex2) { //handling ex2; throw x } finally { //finalStatements; } //Next statement .. statement2 throws an exception of type Exception2.

  40. try { statement1; statement2; statement3; } catch(Exception1 ex1) { //handling ex1; } catch(Exception2 ex2) { //handling ex2; throw x } finally { //finalStatements; } //Next statement .. Handling exception

  41. try { statement1; statement2; statement3; } catch(Exception1 ex1) { //handling ex1; } catch(Exception2 ex2) { //handling ex2; throw x } finally { //finalStatements; } //Next statement .. Execute the final block

  42. try { statement1; statement2; statement3; } catch(Exception1 ex1) { //handling ex1; } catch(Exception2 ex2) { //handling ex2; throw x } finally { //finalStatements; } //Next statement .. Rethrow the exception and control is transferred to the caller

  43. Exception handling separates error-handling code from normal programming tasks. • Thus making programs easier to read and to modify. • Be aware, however, that exception handling usually requires more time and resources because it requires • instantiating a new exception object, • rolling back the call stack, and • propagating the errors to the calling methods.

  44. When to use exceptions: • An exception occurs in a method: • If you want the exception to be processed by its caller, you should create an exception object and throw it. • If you can handle the exception in the method where it occurs, there is no need to throw it.

  45. When should you use the try-catch block in the code? • You should use it to deal with unexpected error conditions. • Do not use it to deal with simple, expected situations.

  46. Example

  47. Same example, better

  48. Use the exception classes in the API whenever possible. • Define custom exception classes if the predefined classes are not sufficient. • Define custom exception classes by extending Exception or a subclass of Exception.

  49. Custom Exception InvalidRadiusException Run CircleWithRadiusException TestCircleWithRadiusException

More Related