summaryrefslogtreecommitdiff
path: root/basic_python/exceptions.tex
diff options
context:
space:
mode:
authorPrabhu Ramachandran2018-05-15 19:17:01 +0530
committerPrabhu Ramachandran2018-05-15 19:17:01 +0530
commit2c5145f262e82996c9c2424159e5eb5dde47fae7 (patch)
tree86e1893822781826734eb59dc36ea73cab517066 /basic_python/exceptions.tex
parentcf7c9cc1bb9e4f004e547aaa728fe6254f3cf704 (diff)
downloadpython-workshops-2c5145f262e82996c9c2424159e5eb5dde47fae7.tar.gz
python-workshops-2c5145f262e82996c9c2424159e5eb5dde47fae7.tar.bz2
python-workshops-2c5145f262e82996c9c2424159e5eb5dde47fae7.zip
Reorganize files so order is obvious.
Diffstat (limited to 'basic_python/exceptions.tex')
-rw-r--r--basic_python/exceptions.tex292
1 files changed, 0 insertions, 292 deletions
diff --git a/basic_python/exceptions.tex b/basic_python/exceptions.tex
deleted file mode 100644
index 8b9eb46..0000000
--- a/basic_python/exceptions.tex
+++ /dev/null
@@ -1,292 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%Tutorial slides on Python.
-%
-% Author: FOSSEE
-% Copyright (c) 2017, FOSSEE, IIT Bombay
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\documentclass[14pt,compress]{beamer}
-\input{macros.tex}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Title page
-\title[Exceptions]{Python language: exceptions}
-
-\author[FOSSEE Team] {The FOSSEE Group}
-
-\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
-\date[] {Mumbai, India}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% DOCUMENT STARTS
-\begin{document}
-
-\begin{frame}
- \titlepage
-\end{frame}
-
-\begin{frame}{Motivation}
- \begin{itemize}
- \item How do you signal errors to a user?
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \frametitle{Exceptions}
- \begin{itemize}
- \item Python's way of notifying you of errors
- \item Several standard exceptions: \texttt{SyntaxError}, \texttt{IOError}
- etc.
- \item Users can also \texttt{raise} errors
- \item Users can create their own exceptions
- \item Exceptions can be ``caught'' via \texttt{try/except} blocks
- \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Exceptions: examples}
- \begin{lstlisting}
-In []: while True print('Hello world')
- \end{lstlisting}
-\pause
- \begin{lstlisting}
-File "<stdin>", line 1, in ?
- while True print('Hello world')
- ^
-SyntaxError: invalid syntax
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Exceptions: examples}
- \begin{lstlisting}
-In []: print(spam)
-\end{lstlisting}
-\pause
-\begin{lstlisting}
-Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
-NameError: name 'spam' is not defined
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Exceptions: examples}
- \begin{lstlisting}
-In []: 1 / 0
-\end{lstlisting}
-\pause
-\begin{lstlisting}
-Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
-ZeroDivisionError: integer division
-or modulo by zero
-\end{lstlisting}
-\end{frame}
-
-
-\begin{frame}[fragile]
- \frametitle{Exceptions: examples}
-\begin{lstlisting}
-In []: '2' + 2
-\end{lstlisting}
-\pause
-\begin{lstlisting}
-Traceback (most recent call last):
- File "<stdin>", line 1, in ?
-TypeError: cannot concatenate 'str' and 'int' objects
-\end{lstlisting}
-\end{frame}
-
-
-\begin{frame}[fragile]
- \frametitle{Processing user input}
- \begin{lstlisting}
-prompt = 'Enter a number(Q to quit): '
-a = input(prompt)
-
-num = int(a) if a != 'Q' else 0
- \end{lstlisting}
- \emphbar{What if the user enters some other alphabet?}
-\end{frame}
-
-
-\begin{frame}[fragile]
- \frametitle{Handling Exceptions}
- Python provides a \typ{try} and \typ{except} clause.
- \begin{lstlisting}
-prompt = 'Enter a number(Q to quit): '
-a = input(prompt)
-try:
- num = int(a)
- print(num)
-except:
- if a == 'Q':
- print("Exiting ...")
- else:
- print("Wrong input ...")
- \end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Handling Exceptions a little better}
- Use specific exceptions; avoid blanket except clauses
- \begin{lstlisting}
-prompt = 'Enter a number(Q to quit): '
-a = input(prompt)
-try:
- num = int(a)
- print(num)
-except ValueError:
- if a == 'Q':
- print("Exiting ...")
- else:
- print("Wrong input ...")
- \end{lstlisting}
-\end{frame}
-
-
-\begin{frame}[fragile]
- \frametitle{Exceptions: examples}
- \small
-\begin{lstlisting}
-prompt = "Enter a number: "
-while True:
- try:
- x = int(input(prompt))
- break
- except ValueError:
- print("Invalid input, try again...")
-
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Catching multiple exceptions}
- \small
-\begin{lstlisting}
-while True:
- try:
- data = input()
- x = int(data.split(',')[1])
- break
- except IndexError:
- print('Input at least 2 values.')
- except ValueError:
- print("Invalid input, try again...")
-
-\end{lstlisting}
-\end{frame}
-
-
-\begin{frame}[fragile]
- \frametitle{Catching multiple exceptions}
-\begin{lstlisting}
-data = input()
-try:
- x = int(data.split(',')[1])
-except (ValueError, IndexError):
- print("Invalid input ...")
-
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{\typ{try, except, else}}
- \small
-\begin{lstlisting}
-while True:
- try:
- data = input()
- x = int(data.split(',')[1])
- except (ValueError, IndexError):
- print("Invalid input ...")
- else:
- print('All is well!')
- break
- \end{lstlisting}
-
-\end{frame}
-
-
-\begin{frame}
- \frametitle{Some comments}
- \begin{itemize}
- \item In practice NEVER use blanket except clauses
- \item Always catch specific exceptions
- \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Exceptions: raising your exceptions}
-\small
-\begin{lstlisting}
->>> raise ValueError("your error message")
-Traceback (most recent call last):
- File "<stdin>", line 2, in ?
-ValueError: your error message
-\end{lstlisting}
-\end{frame}
-
-
-
-\begin{frame}[fragile]
- \frametitle{Exceptions: try/finally}
- \small
-\begin{lstlisting}
-while True:
- try:
- x = int(input(prompt))
- break
- except ValueError:
- print("Invalid number, try again...")
- finally:
- print("All good!")
-
- \end{lstlisting}
- \normalsize
- Always runs the finally clause!
-\end{frame}
-
-
-\begin{frame}[fragile]
- \frametitle{Exceptions: try/finally}
- \begin{lstlisting}
-def f(x):
- try:
- y = int(x)
- return y
- except ValueError:
- print(x)
- finally:
- print('finally')
-
->>> f(1)
->>> f('a')
-\end{lstlisting}
-Always runs the finally clause!
-\end{frame}
-
-
-\begin{frame}
- \frametitle{Summary}
- \begin{itemize}
- \item Catching exceptions with \typ{try/except}
- \item Catching multiple exceptions
- \item Cleanup with \typ{finally}
- \item Raising your own exceptions
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \frametitle{What next?}
- \begin{itemize}
- \item Only covered the very basics
- \item More advanced topics remain
- \item Read the official Python tutorial:
- \url{docs.python.org/tutorial/}
- \end{itemize}
-\end{frame}
-
-\end{document}