blob: 7bc515c488613fd80164b80f5ca49b097a8b911a [file] [log] [blame]
Guido van Rossum3bead091992-01-27 17:00:37 +00001# Python test set -- part 5, built-in exceptions
2
3from test_support import *
Barry Warsaw6ed41a01997-08-29 21:58:25 +00004from types import ClassType
Guido van Rossum3bead091992-01-27 17:00:37 +00005
6print '5. Built-in exceptions'
7# XXX This is not really enough, each *operation* should be tested!
8
Jeremy Hylton56c807d2000-06-20 18:52:57 +00009def test_raise_catch(exc):
10 try:
11 raise exc, "spam"
12 except exc, err:
13 buf = str(err)
14 try:
15 raise exc("spam")
16 except exc, err:
17 buf = str(err)
18 print buf
19
Barry Warsaw6ed41a01997-08-29 21:58:25 +000020def r(thing):
Jeremy Hylton56c807d2000-06-20 18:52:57 +000021 test_raise_catch(thing)
Barry Warsaw6ed41a01997-08-29 21:58:25 +000022 if type(thing) == ClassType:
Guido van Rossum41360a41998-03-26 19:42:58 +000023 print thing.__name__
Barry Warsaw6ed41a01997-08-29 21:58:25 +000024 else:
Guido van Rossum41360a41998-03-26 19:42:58 +000025 print thing
Guido van Rossum3bead091992-01-27 17:00:37 +000026
27r(AttributeError)
28import sys
29try: x = sys.undefined_attribute
30except AttributeError: pass
31
32r(EOFError)
33import sys
34fp = open(TESTFN, 'w')
35fp.close()
36fp = open(TESTFN, 'r')
37savestdin = sys.stdin
38try:
Guido van Rossum41360a41998-03-26 19:42:58 +000039 try:
40 sys.stdin = fp
41 x = raw_input()
42 except EOFError:
43 pass
Guido van Rossum3bead091992-01-27 17:00:37 +000044finally:
Guido van Rossum41360a41998-03-26 19:42:58 +000045 sys.stdin = savestdin
46 fp.close()
Guido van Rossum3bead091992-01-27 17:00:37 +000047
48r(IOError)
49try: open('this file does not exist', 'r')
50except IOError: pass
51
52r(ImportError)
53try: import undefined_module
54except ImportError: pass
55
56r(IndexError)
57x = []
58try: a = x[10]
59except IndexError: pass
60
61r(KeyError)
62x = {}
63try: a = x['key']
64except KeyError: pass
65
66r(KeyboardInterrupt)
67print '(not testable in a script)'
68
69r(MemoryError)
70print '(not safe to test)'
71
72r(NameError)
73try: x = undefined_variable
74except NameError: pass
75
76r(OverflowError)
77x = 1
78try:
Guido van Rossum41360a41998-03-26 19:42:58 +000079 while 1: x = x+x
Guido van Rossum3bead091992-01-27 17:00:37 +000080except OverflowError: pass
81
82r(RuntimeError)
83print '(not used any more?)'
84
85r(SyntaxError)
Guido van Rossume2cb7271995-08-11 14:24:47 +000086try: exec '/\n'
Guido van Rossum3bead091992-01-27 17:00:37 +000087except SyntaxError: pass
88
89r(SystemError)
90print '(hard to reproduce)'
91
92r(SystemExit)
93import sys
94try: sys.exit(0)
95except SystemExit: pass
96
97r(TypeError)
98try: [] + ()
99except TypeError: pass
100
101r(ValueError)
102try: x = chr(10000)
103except ValueError: pass
104
105r(ZeroDivisionError)
106try: x = 1/0
107except ZeroDivisionError: pass
108
Barry Warsaw992cb8a2000-05-25 23:16:54 +0000109r(Exception)
110try: x = 1/0
111except Exception, e: pass
112
Guido van Rossum3bead091992-01-27 17:00:37 +0000113unlink(TESTFN)