What about using multiple dispatch?
handle(::ExceptionType1, ::MyObject) = ...
handle(::ExceptionType2, ::MyObject) = ...
handle(::ExceptionType3, ::MyObject) = ...
handle(e::Exception, ::MyObject) = rethrow(e)
try 
     # Access a dict here 
catch e 
   handle(e, dict)
end 

Am Montag, 17. November 2014 15:49:24 UTC+1 schrieb Luthaf:
>
> Hello ! 
>
> Is there a way to catch an exception by type in Julia ? Coming from 
> python, I am very tempted to do this kind of things: 
> ``` 
> try 
>      # Access a dict here 
> catch e 
>      if isa(KeyError, e) 
>          # Handle the KeyError, as I know what to do in that case 
>      else 
> # Re-throw to upper level 
>          throw(e) 
> end 
> ``` 
> But that is a lot of boilerplate when used many times. 
>
> Maybe it is not the Julia way to express this kind of problem (handling 
> one type of exception, while letting the others go up), but I could not 
> find something about it. 
> I can not just remove all the exceptions as some of them are thrown by 
> Base. 
>
>
> Thank for yours answers ! 
> Guillaume 
>

Reply via email to