[IronPython] catching WebException from OpenReadAsync

Benjamin West bewest at gmail.com
Thu Jun 28 02:22:18 CEST 2007


Is this a bug or am I doing something wrong?

$ cat webclient.py
import clr
import System
from System import Uri
from System.Net import WebClient, WebException


class Foo:
        def __init__(self, uri):
                self.setup(uri)

        def setup(self, uri):
                self.uri = Uri(uri)
                self.wc = WebClient()
                self.wc.OpenReadCompleted += self.asyncReader
                try:
                        self.wc.OpenReadAsync(self.uri)
                        print "fetching.... please wait."
                except (Exception, WebException), e: print "got
exception: %s" % e

        def asyncReader(self, sender, args):
                stream = args.Result
                try:
                        print str(stream)
                        print "Success."
                except (Exception, WebException), e: print "got
exception: %s" % e


$ ipy
IronPython 1.1 (1.1) on .NET 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
>>> from webclient import *
>>> f = Foo('http://www.google.com/bad/url')
fetching.... please wait.
>>> Unhandled exception:
Traceback (most recent call last):
  File System, line unknown, in OpenReadAsyncCallback
  File System, line unknown, in GetWebResponse
  File System, line unknown, in EndGetResponse
  File mscorlib, line unknown, in PerformWaitCallback
  File mscorlib, line unknown, in Run
  File mscorlib, line unknown, in WaitCallback_Context
  File System, line unknown, in OpenReadOperationCompleted
  File System, line unknown, in OnOpenReadCompleted
  File System, line unknown, in Invoke
  File , line 0, in System.Void(Object, OpenReadCompletedEventArgs)##73
  File c:\Program Files\Internet Explorer\webclient.py, line 21, in asyncReader
  File , line 0, in get_Result##76
  File System, line unknown, in get_Result
  File System, line unknown, in RaiseExceptionIfNecessary
StandardError: An exception occurred during the operation, making the
result invalid.  Check InnerException for exception details.

Unhandled Exception: System.Reflection.TargetInvocationException: An
exception occurred during the operation, making the result invalid.
Check InnerException for exception details. --->
System.Net.WebException: The remote server returned an error: (404)
Not Found.
   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request,
IAsyncResult result)
   at System.Net.WebClient.OpenReadAsyncCallback(IAsyncResult result)
   --- End of inner exception stack trace ---
   at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   at System.Net.OpenReadCompletedEventArgs.get_Result()
   at get_Result##76(Object )
   at IronPython.Runtime.Calls.CallTarget1.Invoke(Object arg0)
   at IronPython.Runtime.Calls.FastCallable1.CallInstance(ICallerContext
context, Object arg0)
   at IronPython.Runtime.Calls.FastCallable1.CallInstance(ICallerContext
context, Object instance, Object[] args)
   at IronPython.Runtime.Types.ReflectedGetterSetter.CallGetter(Object
instance, Object[] args)
   at IronPython.Runtime.Types.ReflectedProperty.GetAttribute(Object
instance, Object context)
   at IronPython.Runtime.Operations.Ops.GetDescriptor(Object o, Object
instance, Object context)
   at IronPython.Runtime.Types.DynamicType.UncheckedGetDescriptor(Object
o, Object instance, Object context)
   at IronPython.Runtime.Types.DynamicType.TryBaseGetAttr(ICallerContext
context, Object self, SymbolId name, Object& ret)
   at IronPython.Runtime.Types.ReflectedType.TryGetAttr(ICallerContext
context, Object self, SymbolId name, Object& ret)
   at IronPython.Runtime.Types.DynamicType.GetAttr(ICallerContext
context, Object self, SymbolId name)
   at IronPython.Runtime.Operations.Ops.GetAttr(ICallerContext
context, Object o, SymbolId name)
   at webclient.asyncReader$f146(FunctionEnvironment8Dictionary $env,
Object self, Object sender, Object args) in c:\Program Files\Internet
Explorer\webclient.py:line 21
   at IronPython.Runtime.Calls.Function3.Call(ICallerContext context,
Object arg0, Object arg1, Object arg2)
   at IronPython.Runtime.Calls.Function3.Call(ICallerContext context,
Object[] args)
   at IronPython.Runtime.Calls.PythonFunction.CallInstance(ICallerContext
context, Object instance, Object[] args)
   at IronPython.Runtime.Calls.Method.Call(ICallerContext context,
Object[] args)
   at IronPython.Runtime.Operations.Ops.Call(Object func, Object[] args)
   at IronPython.Runtime.Types.ReflectedEvent.EventDispatcher.Call(Object[]
args)
   at IronPython.Runtime.Operations.Ops.Call(Object func, Object[] args)
   at IronPython.Runtime.Operations.Ops.Call(Object func, Object arg0,
Object arg1)
   at System.Void(Object, OpenReadCompletedEventArgs)##73(Object ,
Object , OpenReadCompletedEventArgs )
   at System.Net.OpenReadCompletedEventHandler.Invoke(Object sender,
OpenReadCompletedEventArgs e)
   at System.Net.WebClient.OnOpenReadCompleted(OpenReadCompletedEventArgs e)
   at System.Net.WebClient.OpenReadOperationCompleted(Object arg)
   at System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object
state)
   at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state)
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)



More information about the Ironpython-users mailing list