On 11 Jul 2013, at 16:08, Vincent Blondeau 
<[email protected]> wrote:

> Le 11/07/2013 15:42, Sven Van Caekenberghe a écrit :
>> Vincent,
>> 
>> On 11 Jul 2013, at 15:06, Vincent Blondeau 
>> <[email protected]> wrote:
>> 
>>> I use a Zinc Server. So when I do the request, Zinc catch the Exception and 
>>> send an error as response.
>> ZnSingleThreadedServer>>#handleRequestProtected: request
>>      "Handle request and return a response.
>>      If a Smalltalk Error is thrown, return a HTTP Server Error response."
>> 
>>      ^ [ self authenticateAndDelegateRequest: request ]
>>              on: Error
>>              do: [ :exception |
>>                      self debugMode
>>                              ifTrue: [ exception pass ]
>>                              ifFalse: [
>>                                      self logServerError: exception.
>>                                      ZnResponse serverError: exception 
>> printString ] ]
>> 
>> AFAICT this code catches Error, not Exception, hence it would let 
>> Notification through. No ?
>> 
>> Sven
>> 
>> 
> Indeed but I use the Zinc-Rest-Server and all Exceptions are caught:
> 
> ZnRestServerDelegate>>handleRequest: request
>    | call |
>    (call := self match: request)
>        ifNil: [ ^ self noHandlerFound: request ].
>    (self authenticate: call)
>        ifFalse: [ ^ self callUnauthorized: request ].
>    ^ [ self execute: call ]
>        on: Exception
>        do: [ :exception |
>            request server debugMode
>                ifTrue: [ exception pass ]
>                ifFalse: [
>                    request server logServerError: exception.
>                    self serverError: request exception: exception ] ]
> 

Indeed.

I know why I wrote that (I often write assertions in code, and AssertionFailed 
is not an Error, hence the broader net) - I will think about it.

In the mean time, you could subclass ZnRestServerDelegate and override 
#handleRequest:

Maybe I can also improve the overriding options a bit, like with an 
introduction of an #exceptionsToCatch accessor.

HTH,

Sven



--
Sven Van Caekenberghe
Proudly supporting Pharo
http://pharo.org
http://association.pharo.org
http://consortium.pharo.org





Reply via email to