python programming - x. exception handling and assertions

Post on 20-May-2015

522 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PYTHON PROGRAMMING

X. EXCEPTION HANDLING

Engr. Ranel O. Padon

PYTHON PROGRAMMING TOPICS

I• Introduction to Python Programming

II• Python Basics

III• Controlling the Program Flow

IV• Program Components: Functions, Classes, Packages, and Modules

V• Sequences (List and Tuples), and Dictionaries

VI• Object-Based Programming: Classes and Objects

VII• Customizing Classes and Operator Overloading

VIII• Object-Oriented Programming: Inheritance and Polymorphism

IX• Randomization Algorithms

X• Exception Handling and Assertions

XI• String Manipulation and Regular Expressions

XII• File Handling and Processing

XIII• GUI Programming Using Tkinter

DefensiveProgramming

try

except

else

finally

raise

assert

class Exception

http://www.newser.com/story/20282/china-atm-glitch-nets-man-life.html

http://www.newser.com/story/148427/atm-error-lets-man-withdraw-15m-gamble-it-away.html

INTRODUCTION

Exception is an indication of a special event that

occurs during a program’s execution.

Exception indicates that, although the event can occur,

the event occurs infrequently.

INTRODUCTION

INTRODUCTION

When a Python script encounters a situation that

it can't cope with, it raises an exception.

An exception is a Python object that represents an error.

INTRODUCTION

INTRODUCTION

INTRODUCTION | Exceptions

1. Division by Zero

2. Addition of two incompatible types.

3. Accessing a file that is nonexistent.

4. Accessing a nonexistent index of a sequence.

5. Deleting a table in a disconnected database server.

6. Withdrawing money greater than the available amount.

7. Invalid input bearing angle.

8. Negative perimeter distance.

9. …

INTRODUCTION | Exceptions

Resource Leak

Aborting a program component could leave a file or a network

connection in a state in which other programs

are not able to acquire the resource.

EXCEPTION HANDLING

EXCEPTION HANDLING

Advantages

1. handle the error

- catching the exception

- resolving the exception

2. continue processing as if no error had occured

3. programs are more clear, robust and more fault-tolerant

EXCEPTION HANDLING

When no exceptions occur, exception-handling code

incurs little or no performance penalties.

Programs that implement exception handling operate more

efficiently than programs that perform error handling throughout

the program logic.

EXCEPTION HANDLING

Brute-Force Error Handling

EXCEPTION HANDLING

Brute-Force Error Handling

it may work, but intermixing the logic of the program

with the error-handling logic can make the program difficult

to read, modify, maintain and debug—especially in large

applications.

EXCEPTION HANDLING

Exception handling enables the programmer to

remove error-handling code from the “main line”

of the program’s execution.

This improves program clarity and enhances modifiability.

EXCEPTION HANDLING | Python

Mechanism is similar with that used in Modula-3, C# and Java.

Not all programming languages support exception handling.

EXCEPTION HANDLING

EXCEPTION HANDLING | try-except

EXCEPTION HANDLING | try-except

Python uses try statements to enable exception handling.

The try statement encloses statements

that potentially cause exceptions.

A try statement consists of keyword try, followed by a colon

(:), followed by a suite of code in which exceptions may occur,

followed by one or more clauses.

EXCEPTION HANDLING | try-except

Immediately following the try suite may be

one or more except clauses

(also called except handlers).

Each except clause specifies zero or more

exception names that represent the type(s)

of exceptions the except clause can handle.

EXCEPTION HANDLING | try-except

If an exception occurs in a try suite,

the try suite expires and program control

transfers to the first matching except handler

(if there is one) following the try suite.

EXCEPTION HANDLING | try-except

an except handler always should specify the name

of the exception to catch.

an empty except handler should be used only for a

default catch-all case.

EXCEPTION HANDLING | try-except

If no exceptions occur in a try suite,

the interpreter ignores the exception handlers

for that try statement.

EXCEPTION HANDLING | try-except

EXCEPTION HANDLING | else

After the last except clause, an optional else clause

contains code that executes if the code in

the try suite raised no exceptions.

EXCEPTION HANDLING | Summary

EXCEPTION HANDLING | Summary

EXCEPTION HANDLING | Summary

EXCEPTION HANDLING | Summary

EXCEPTION HANDLING | finally

A try suite can be followed by zero except clauses;

in that case, it must be followed by a finally clause.

The code in the finally suite always executes,

regardless of whether an exception occurs.

EXCEPTION HANDLING | finally

Programs frequently request and release resources dynamically.

Programs that obtain certain types of resources (such as files)

sometimes must return those resources explicitly to the system

to avoid resource leaks.

EXCEPTION HANDLING | finally

The finally clause is an ideal location to place

resource deallocation code for resources acquired.

EXCEPTION HANDLING | finally

EXCEPTION HANDLING | finally

EXCEPTION HANDLING | finally

EXCEPTION HANDLING | finally

EXCEPTION HANDLING | Exception

Exceptions are objects of classes that inherit

from class Exception.

Programmer-defined exception classes should

derive directly or indirectly from class Exception.

class Exception

class Exception

(1/2)

class Exception

(2/2)

EXCEPTION HANDLING | raise

Raising/Throwing An Exception

raise keyword

Catching and handling exceptions enables a

program to know when an error has occurred, then to take

actions to minimize the consequences of that error.

EXCEPTION HANDLING | raise

The raise statement may specify an argument or

arguments that initialize the exception object.

In this case, a comma follows the exception name, and the

argument or a tuple of arguments follows the comma.

EXCEPTION HANDLING | raise Args

EXCEPTION HANDLING | raise Args

EXCEPTION HANDLING | Custom

EXCEPTION HANDLING | Custom

EXCEPTION HANDLING | Custom

EXCEPTION HANDLING | assert

An assertion is a sanity-check that you can turn on/off

when you are done with your testing of the program.

Assertion is like a raise-if statement

(or to be more accurate, a raise-if-not statement).

An expression is tested, and if the result comes up false,

an exception is raised.

EXCEPTION HANDLING | assert

Programmers often place assertions

at the start of a function to check for valid input,

and after a function call to check for valid output.

EXCEPTION HANDLING | assert

EXCEPTION HANDLING | assert

EXCEPTION HANDLING | assert

EXCEPTION HANDLING | assert

EXCEPTION HANDLING | assert

EXCEPTION HANDLING | assert

EXCEPTION HANDLING

EXCEPTION HANDLING

REFERENCES

Deitel, Deitel, Liperi, and Wiedermann - Python: How to Program (2001).

Disclaimer: Most of the images/information used here have no proper source

citation, and I do not claim ownership of these either. I don’t want to reinvent the

wheel, and I just want to reuse and reintegrate materials that I think are useful or

cool, then present them in another light, form, or perspective. Moreover, the

images/information here are mainly used for illustration/educational purposes only,

in the spirit of openness of data, spreading light, and empowering people with

knowledge.

Thank You!

top related