| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | # Python test set -- part 5, built-in exceptions | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from test_support import * | 
					
						
							| 
									
										
										
										
											1997-10-06 20:19:59 +00:00
										 |  |  | from types import ClassType | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | print '5. Built-in exceptions' | 
					
						
							|  |  |  | # XXX This is not really enough, each *operation* should be tested! | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-10-06 20:19:59 +00:00
										 |  |  | def r(thing): | 
					
						
							|  |  |  |     if type(thing) == ClassType: | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         print thing.__name__ | 
					
						
							| 
									
										
										
										
											1997-10-06 20:19:59 +00:00
										 |  |  |     else: | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         print thing | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | r(AttributeError) | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | try: x = sys.undefined_attribute | 
					
						
							|  |  |  | except AttributeError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(EOFError) | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | fp = open(TESTFN, 'w') | 
					
						
							|  |  |  | fp.close() | 
					
						
							|  |  |  | fp = open(TESTFN, 'r') | 
					
						
							|  |  |  | savestdin = sys.stdin | 
					
						
							|  |  |  | try: | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         try: | 
					
						
							|  |  |  |                 sys.stdin = fp | 
					
						
							|  |  |  |                 x = raw_input() | 
					
						
							|  |  |  |         except EOFError: | 
					
						
							|  |  |  |                 pass | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | finally: | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         sys.stdin = savestdin | 
					
						
							|  |  |  |         fp.close() | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | r(IOError) | 
					
						
							|  |  |  | try: open('this file does not exist', 'r') | 
					
						
							|  |  |  | except IOError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(ImportError) | 
					
						
							|  |  |  | try: import undefined_module | 
					
						
							|  |  |  | except ImportError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(IndexError) | 
					
						
							|  |  |  | x = [] | 
					
						
							|  |  |  | try: a = x[10] | 
					
						
							|  |  |  | except IndexError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(KeyError) | 
					
						
							|  |  |  | x = {} | 
					
						
							|  |  |  | try: a = x['key'] | 
					
						
							|  |  |  | except KeyError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(KeyboardInterrupt) | 
					
						
							|  |  |  | print '(not testable in a script)' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(MemoryError) | 
					
						
							|  |  |  | print '(not safe to test)' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(NameError) | 
					
						
							|  |  |  | try: x = undefined_variable | 
					
						
							|  |  |  | except NameError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(OverflowError) | 
					
						
							|  |  |  | x = 1 | 
					
						
							|  |  |  | try: | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         while 1: x = x+x | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | except OverflowError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(RuntimeError) | 
					
						
							|  |  |  | print '(not used any more?)' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(SyntaxError) | 
					
						
							|  |  |  | try: exec '/\n' | 
					
						
							|  |  |  | except SyntaxError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(SystemError) | 
					
						
							|  |  |  | print '(hard to reproduce)' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(SystemExit) | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | try: sys.exit(0) | 
					
						
							|  |  |  | except SystemExit: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(TypeError) | 
					
						
							|  |  |  | try: [] + () | 
					
						
							|  |  |  | except TypeError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(ValueError) | 
					
						
							|  |  |  | try: x = chr(10000) | 
					
						
							|  |  |  | except ValueError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r(ZeroDivisionError) | 
					
						
							|  |  |  | try: x = 1/0 | 
					
						
							|  |  |  | except ZeroDivisionError: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | unlink(TESTFN) |