[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