File tree 2 files changed +40
-1
lines changed
2 files changed +40
-1
lines changed Original file line number Diff line number Diff line change 1
1
using System ;
2
2
3
-
4
3
namespace Python . Test
5
4
{
6
5
//========================================================================
@@ -55,6 +54,25 @@ public static bool ThrowException()
55
54
{
56
55
throw new OverflowException ( "error" ) ;
57
56
}
57
+
58
+ public static void ThrowChainedExceptions ( )
59
+ {
60
+ try
61
+ {
62
+ try
63
+ {
64
+ throw new Exception ( "Innermost exception" ) ;
65
+ }
66
+ catch ( Exception exc )
67
+ {
68
+ throw new Exception ( "Inner exception" , exc ) ;
69
+ }
70
+ }
71
+ catch ( Exception exc2 )
72
+ {
73
+ throw new Exception ( "Outer exception" , exc2 ) ;
74
+ }
75
+ }
58
76
}
59
77
60
78
Original file line number Diff line number Diff line change @@ -345,6 +345,27 @@ def testPicklingExceptions(self):
345
345
346
346
self .assertEqual (exc .args , loaded .args )
347
347
348
+ def testChainedExceptions (self ):
349
+ if six .PY3 :
350
+ from Python .Test import ExceptionTest
351
+
352
+ try :
353
+ ExceptionTest .ThrowChainedExceptions ()
354
+ except Exception as exc :
355
+ msgs = [
356
+ "Outer exception" ,
357
+ "Inner exception" ,
358
+ "Innermost exception"
359
+ ]
360
+
361
+ for msg in msgs :
362
+ self .assertEqual (exc .Message , msg )
363
+ self .assertEqual (exc .__cause__ , exc .InnerException )
364
+ exc = exc .__cause__
365
+
366
+ else :
367
+ self .fail ("Test should raise an exception" )
368
+
348
369
349
370
def test_suite ():
350
371
return unittest .makeSuite (ExceptionTests )
You can’t perform that action at this time.
0 commit comments