CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line...

59
CS 200 - Programming I: Exceptions Marc Renault Department of Computer Sciences University of Wisconsin – Madison Spring 2018 TopHat Sec 3 (AM) Join Code: 427811 TopHat Sec 4 (PM) Join Code: 165455

Transcript of CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line...

Page 1: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

CS 200 - Programming I: Exceptions

Marc Renault

Department of Computer SciencesUniversity of Wisconsin – Madison

Spring 2018TopHat Sec 3 (AM) Join Code: 427811TopHat Sec 4 (PM) Join Code: 165455

Page 2: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Command-Line Arguments

Page 3: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Passing Command-Line Arguments

Example: java CmdLineEx arg0 agr1 arg2

Command-Line ArgumentsArguments passed to the program when it is launched.In example: arg0, arg1, arg2

String[] argsPassed to the main method via the String[] args.In example: String[] args = {"arg0","arg1","arg2"}.

1/29

Page 4: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Passing Command-Line Arguments

Example: java CmdLineEx arg0 agr1 arg2

Command-Line ArgumentsArguments passed to the program when it is launched.In example: arg0, arg1, arg2

String[] argsPassed to the main method via the String[] args.In example: String[] args = {"arg0","arg1","arg2"}.

1/29

Page 5: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 1

What is the output when executed using the commandjava CmdLineEx Do or do not, there is no try.

public class CmdLineEx {

public static void main(String [] args) {int i = 0;for(String s: args) {

i += s.length ();}System.out.print(i);

}

}

2/29

Page 6: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Command-Line Argument Exercise

Write a program that receives from the command line both astring and action to perform (either changing to upper case orlower case). The command-line arguments are organized asfollows:

-s str , where str is the string to transform-l to lowercase-u to uppercase

There should only be one of -l or -u. The arguments should behandled in any order.After parsing the arguments, the program outputs the string,having converted to upper or lower case as per thecommand-line arguments.

3/29

Page 7: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Exceptions

Page 8: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Exceptions

What is an exception?Shorthand for “an exceptional event”.An event that interrupts the normal flow of the program.

What causes these events?

A failure of the machine where the program is running.A programming error.A user goes off the “happy path”.

Why use exceptions?Separates error-checking from normal “happy path” code.Organized with try-catch-finally and throws.

4/29

Page 9: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Exceptions

What is an exception?Shorthand for “an exceptional event”.An event that interrupts the normal flow of the program.

What causes these events?A failure of the machine where the program is running.

A programming error.A user goes off the “happy path”.

Why use exceptions?Separates error-checking from normal “happy path” code.Organized with try-catch-finally and throws.

4/29

Page 10: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Exceptions

What is an exception?Shorthand for “an exceptional event”.An event that interrupts the normal flow of the program.

What causes these events?A failure of the machine where the program is running.A programming error.

A user goes off the “happy path”.

Why use exceptions?Separates error-checking from normal “happy path” code.Organized with try-catch-finally and throws.

4/29

Page 11: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Exceptions

What is an exception?Shorthand for “an exceptional event”.An event that interrupts the normal flow of the program.

What causes these events?A failure of the machine where the program is running.A programming error.A user goes off the “happy path”.

Why use exceptions?Separates error-checking from normal “happy path” code.Organized with try-catch-finally and throws.

4/29

Page 12: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Exceptions

What is an exception?Shorthand for “an exceptional event”.An event that interrupts the normal flow of the program.

What causes these events?A failure of the machine where the program is running.A programming error.A user goes off the “happy path”.

Why use exceptions?Separates error-checking from normal “happy path” code.Organized with try-catch-finally and throws.

4/29

Page 13: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Java Exception Hierarchy

Object

Throwable

Error

...

Exception

Runtime

...

...

5/29

Page 14: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Errors

CausesErrors are caused by abnormal conditions beyond the control ofthe programmer causing the program to fail such as hardwarefailures.

Some Examplesjava.io.IOError

java.lang.OutOfMemoryError

java.lang.LinkageError

6/29

Page 15: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Java Exception Hierarchy

Object

Throwable

Error

...

Exception

Runtime

...

...

7/29

Page 16: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Runtime Exception

CausesRuntime Exceptions are typically caused by programmingerrors (bugs) not caught at compile time such as trying toaccess an out of bounds cell in an array.

Some Examplesjava.lang.NullPointerExceptionjava.lang.IndexOutOfBoundsException

java.lang.ArrayIndexOutOfBoundsExceptionjava.lang.StringIndexOutOfBoundsException

java.lang.ArithmeticException

8/29

Page 17: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Java Exception Hierarchy

Object

Throwable

Error

...

Exception

Runtime

...

...

9/29

Page 18: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Java Exception Hierarchy

Unchecked

Object

Throwable

Error

...

Exception

Runtime

...

...

9/29

Page 19: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Java Exception Hierarchy

Unchecked

Checked

Object

Throwable

Error

...

Exception

Runtime

...

...

9/29

Page 20: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Unchecked vs Checked

Unchecked ExceptionAn unchecked exception is an exceptional condition that theapplication usually cannot anticipate or recover from. Theseare:

ErrorsRuntime exceptions

Checked ExceptionsAll other exceptions are checked exceptions. A method musthandle all checked exceptions by either:

Using a try-catch block, orThrowing the exception.

10/29

Page 21: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Unchecked vs Checked

Unchecked ExceptionAn unchecked exception is an exceptional condition that theapplication usually cannot anticipate or recover from. Theseare:

ErrorsRuntime exceptions

Checked ExceptionsAll other exceptions are checked exceptions. A method musthandle all checked exceptions by either:

Using a try-catch block, orThrowing the exception.

10/29

Page 22: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 2What kind of exception isjava.util.InputMismatchException?The following code compiles. When the user inputs “a”, theprogram terminates with ajava.util.InputMismatchException.import java.util.Scanner;

public class ExceptionEx1 {

public static void main(String [] arg) {Scanner sc = new Scanner(System.in);int a = sc.nextInt ();System.out.println("Value is " + a);

}

}

11/29

Page 23: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

try-catch

try {tryStmt1;...tryStmtN;

}catch (AnException e) {

catchStmt1;...catchStmtN;

}

Control Flow

Try Stmt Block

AnException?

AnExceptionCatch Block

Followingstatements

Yes

No

12/29

Page 24: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

try-catch

try {tryStmt1;...tryStmtN;

}catch (AnException e) {

catchStmt1;...catchStmtN;

}

Control Flow

Try Stmt Block

AnException?

AnExceptionCatch Block

Followingstatements

Yes

No

12/29

Page 25: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 3

What is the output when the user enters “z”?

Scanner sc = new Scanner(System.in);try {

int a = sc.nextInt ();System.out.println("Value is " + a);

}catch(Exception e) {

System.out.print("Catch.");}System.out.print("Done.");

13/29

Page 26: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Catching the Exact Exception

Scanner sc = new Scanner(System.in);try {

int a = sc.nextInt ();System.out.println("Value is " + a);

}catch(Exception e) {

System.out.print("Catch.");}

Best PracticeWhen catching exceptions, be as precise as possible about theexception.

14/29

Page 27: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Catching the Exact Exception

Scanner sc = new Scanner(System.in);try {

int a = sc.nextInt ();System.out.println("Value is " + a);

}catch(InputMismatchException e) {

System.out.print("Input was not an integer.");}

Best PracticeWhen catching exceptions, be as precise as possible about theexception.

14/29

Page 28: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Stack Trace

Scanner sc = new Scanner(System.in);try {

int a = sc.nextInt ();System.out.println("Value is " + a);

}catch(InputMismatchException e) {

System.out.println("Input was not an integer.");e.printStackTrace ();

}

Stack TracePrints the trace of methods calls (with line numbers) on thestack leading to the exception.Throwable has an instance method printStackTrace().

15/29

Page 29: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Basic try-catch-finally

try {tryStatements;

}catch (AnException e) {

catchStatements;}finally {

finallyStatements;}

Basic Control Flow

Try Stmt Block

AnException?

AnExceptionCatch Block

Finally Stmt Block

Followingstatements

Yes

No

16/29

Page 30: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Basic try-catch-finally

try {tryStatements;

}catch (AnException e) {

catchStatements;}finally {

finallyStatements;}

Basic Control Flow

Try Stmt Block

AnException?

AnExceptionCatch Block

Finally Stmt Block

Followingstatements

Yes

No

16/29

Page 31: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 4

What is the output when the user enters “z”?

Scanner sc = new Scanner(System.in);try {

int a = sc.nextInt ();System.out.print("Value is " + a + ".");

}catch(InputMismatchException e) {

System.out.print("Catch.");}finally {

System.out.print("Finally.");}System.out.print("Done.");

17/29

Page 32: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 5

What is the output when the user enters “2”?

Scanner sc = new Scanner(System.in);try {

int a = sc.nextInt ();System.out.print("Value is " + a + ".");

}catch(InputMismatchException e) {

System.out.print("Catch.");}finally {

System.out.print("Finally.");}System.out.print("Done.");

18/29

Page 33: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Multiple catch

try {tryStatements;

}catch (Exception1 e) {

catch1Statements;}catch (Exception2 e) {

catch1Statements;}...catch (ExceptionN e) {

}

Control Flow

Try Stmt Block

CaughtException?

Exception1Catch Block

ExceptionNCatch Block

Followingstatements

No

19/29

Page 34: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Multiple catch

try {tryStatements;

}catch (Exception1 e) {

catch1Statements;}catch (Exception2 e) {

catch1Statements;}...catch (ExceptionN e) {

}

Control Flow

Try Stmt Block

CaughtException?

Exception1Catch Block

ExceptionNCatch Block

Followingstatements

No

19/29

Page 35: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 6What is the output when the user enters “0”?

Scanner sc = new Scanner(System.in);try {

int a = sc.nextInt ();System.out.print("Value is " + 10/a + ".");

}catch(InputMismatchException e) {

System.out.print("Catch Mismatch.");}catch(ArithmeticException e) {

System.out.print("Catch Div 0.");}finally {

System.out.print("Finally.");}System.out.print("Done.");

20/29

Page 36: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Advanced try-catch-finally

try {tryStatements;

}catch (AnException e) {

catchStatements;}finally {

finallyStatements;}

What if the catch blockthrows an exception?

The finally block is stillexecuted.

What if the catch blockreturns?The finally block is stillexecuted.

What if the try blockreturns?The finally block is stillexecuted.

What if the try block throwsan uncaught exception?The finally block is stillexecuted.

21/29

Page 37: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Advanced try-catch-finally

try {tryStatements;

}catch (AnException e) {

catchStatements;}finally {

finallyStatements;}

What if the catch blockthrows an exception?The finally block is stillexecuted.

What if the catch blockreturns?The finally block is stillexecuted.

What if the try blockreturns?The finally block is stillexecuted.

What if the try block throwsan uncaught exception?The finally block is stillexecuted.

21/29

Page 38: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Advanced try-catch-finally

try {tryStatements;

}catch (AnException e) {

catchStatements;}finally {

finallyStatements;}

What if the catch blockthrows an exception?The finally block is stillexecuted.

What if the catch blockreturns?

The finally block is stillexecuted.

What if the try blockreturns?The finally block is stillexecuted.

What if the try block throwsan uncaught exception?The finally block is stillexecuted.

21/29

Page 39: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Advanced try-catch-finally

try {tryStatements;

}catch (AnException e) {

catchStatements;}finally {

finallyStatements;}

What if the catch blockthrows an exception?The finally block is stillexecuted.

What if the catch blockreturns?The finally block is stillexecuted.

What if the try blockreturns?The finally block is stillexecuted.

What if the try block throwsan uncaught exception?The finally block is stillexecuted.

21/29

Page 40: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Advanced try-catch-finally

try {tryStatements;

}catch (AnException e) {

catchStatements;}finally {

finallyStatements;}

What if the catch blockthrows an exception?The finally block is stillexecuted.

What if the catch blockreturns?The finally block is stillexecuted.

What if the try blockreturns?

The finally block is stillexecuted.

What if the try block throwsan uncaught exception?The finally block is stillexecuted.

21/29

Page 41: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Advanced try-catch-finally

try {tryStatements;

}catch (AnException e) {

catchStatements;}finally {

finallyStatements;}

What if the catch blockthrows an exception?The finally block is stillexecuted.

What if the catch blockreturns?The finally block is stillexecuted.

What if the try blockreturns?The finally block is stillexecuted.

What if the try block throwsan uncaught exception?The finally block is stillexecuted.

21/29

Page 42: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Advanced try-catch-finally

try {tryStatements;

}catch (AnException e) {

catchStatements;}finally {

finallyStatements;}

What if the catch blockthrows an exception?The finally block is stillexecuted.

What if the catch blockreturns?The finally block is stillexecuted.

What if the try blockreturns?The finally block is stillexecuted.

What if the try block throwsan uncaught exception?

The finally block is stillexecuted.

21/29

Page 43: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Advanced try-catch-finally

try {tryStatements;

}catch (AnException e) {

catchStatements;}finally {

finallyStatements;}

What if the catch blockthrows an exception?The finally block is stillexecuted.

What if the catch blockreturns?The finally block is stillexecuted.

What if the try blockreturns?The finally block is stillexecuted.

What if the try block throwsan uncaught exception?The finally block is stillexecuted.

21/29

Page 44: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 7

What is the output when the user enters “z”?

Scanner sc = new Scanner(System.in);try {

int a = sc.nextInt ();System.out.print("Value is " + a + ".");return;

}catch(InputMismatchException e) {

System.out.print("Catch.");return;

}finally {

System.out.print("Finally.");}

22/29

Page 45: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Basic Throwing ExceptionsCreating and Using Exceptions

Constructors:Exception() – Creates an Exception object.Exception(msg) – Creates an Exception object containingthe message msg.

Some methods:printStackTrace() – Prints the exception stack trace.getMessage() – Returns the message associated with theexception.

Throwing an Exceptionthrow aThrowable;

Stops normal executions and throws an exception.E.g.throw new Exception("An exception!");

23/29

Page 46: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Basic Throwing ExceptionsCreating and Using Exceptions

Constructors:Exception() – Creates an Exception object.Exception(msg) – Creates an Exception object containingthe message msg.

Some methods:printStackTrace() – Prints the exception stack trace.getMessage() – Returns the message associated with theexception.

Throwing an Exceptionthrow aThrowable;

Stops normal executions and throws an exception.E.g.throw new Exception("An exception!");

23/29

Page 47: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Basic Throwing ExceptionsCreating and Using Exceptions

Constructors:Exception() – Creates an Exception object.Exception(msg) – Creates an Exception object containingthe message msg.

Some methods:printStackTrace() – Prints the exception stack trace.getMessage() – Returns the message associated with theexception.

Throwing an Exceptionthrow aThrowable;

Stops normal executions and throws an exception.E.g.throw new Exception("An exception!");

23/29

Page 48: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 8What is the output when the user enters “z”?Scanner sc = new Scanner(System.in);try {

int a = sc.nextInt ();if(a <= 0)

throw new Exception("Error: Val <= 0.");System.out.print("Value is " + 10/a + ".");

}catch(InputMismatchException e) {

System.out.print("Catch Mismatch.");}catch(Exception e) {

System.out.print(e.getMessage ());}finally {

System.out.print("Finally.");}System.out.print("Done.");

24/29

Page 49: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 9What is the output when the user enters “0”?Scanner sc = new Scanner(System.in);try {

int a = sc.nextInt ();if(a <= 0)

throw new Exception("Error: Val <= 0.");System.out.print("Value is " + 10/a + ".");

}catch(InputMismatchException e) {

System.out.print("Catch Mismatch.");}catch(Exception e) {

System.out.print(e.getMessage ());}finally {

System.out.print("Finally.");}System.out.print("Done.");

25/29

Page 50: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Methods Throwing ExceptionsSpecifying Exceptions Thrown... someMethod(...) throws exception1,exception2,...

Part of the method header.All checked exceptions must be listed.Unchecked ones are optional.

Throwing vs CatchingA method, someMethod, that throws a checked exception ispassing the exception to the caller.The caller can either:

Throw the exception further up the stack calls, orPut the method call to someMethod in a try block andhandle the exception in a catch block.

26/29

Page 51: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Methods Throwing ExceptionsSpecifying Exceptions Thrown... someMethod(...) throws exception1,exception2,...

Part of the method header.All checked exceptions must be listed.Unchecked ones are optional.

Throwing vs CatchingA method, someMethod, that throws a checked exception ispassing the exception to the caller.

The caller can either:Throw the exception further up the stack calls, orPut the method call to someMethod in a try block andhandle the exception in a catch block.

26/29

Page 52: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Methods Throwing ExceptionsSpecifying Exceptions Thrown... someMethod(...) throws exception1,exception2,...

Part of the method header.All checked exceptions must be listed.Unchecked ones are optional.

Throwing vs CatchingA method, someMethod, that throws a checked exception ispassing the exception to the caller.The caller can either:

Throw the exception further up the stack calls, or

Put the method call to someMethod in a try block andhandle the exception in a catch block.

26/29

Page 53: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Methods Throwing ExceptionsSpecifying Exceptions Thrown... someMethod(...) throws exception1,exception2,...

Part of the method header.All checked exceptions must be listed.Unchecked ones are optional.

Throwing vs CatchingA method, someMethod, that throws a checked exception ispassing the exception to the caller.The caller can either:

Throw the exception further up the stack calls, orPut the method call to someMethod in a try block andhandle the exception in a catch block.

26/29

Page 54: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 10What is the output when the user enters “0”?

public static void div(int a, int b) throws Exception {if(b == 0)

throw new Exception("Error: a is 0.");System.out.print("Value is " + b/a + ".");

}

public static void main(String [] arg) {Scanner sc = new Scanner(System.in);int a = sc.nextInt ();try {

div(10, a);}catch(Exception e) {

System.out.print(e.getMessage ());}System.out.print("Done.");

}

27/29

Page 55: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

TopHat Question 11What is the stack trace output when the program runs?

1 public class ExceptionEx11 {23 public static void f() throws Exception {4 throw new Exception ();5 }67 public static void main(String [] arg) {8 try {9 g();

10 }11 catch(Exception e) {12 e.printStackTrace ();13 }14 }1516 public static void g() throws Exception {17 f();18 }1920 }

28/29

Page 56: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Command-Line Arguments Exceptions

Further Reading

COMP SCI 200: Programming IzyBooks.com, 2015.zyBook code:WISCCOMPSCI200Spring2018

Chapter 10. Exceptions

29/29

Page 57: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Appendix References

Appendix

Page 58: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Appendix References

References

Page 59: CS 200 - Programming I: Exceptions€¦ · Command-Line Arguments Exceptions Passing Command-Line Arguments Example:java CmdLineEx arg0 agr1 arg2 Command-LineArguments Argumentspassedtotheprogramwhenitislaunched.

Appendix References

Image Sources I

https://brand.wisc.edu/web/logos/

http://www.zybooks.com/

30/29