diff --git a/agentx.cabal b/agentx.cabal
--- a/agentx.cabal
+++ b/agentx.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                agentx
-version:             0.1.0.3
+version:             0.1.0.4
 synopsis:            AgentX protocol for write SNMP subagents
 description:         Native implementation agentx protocol (rfc2741)       
 license:             BSD3
diff --git a/src/Network/Protocol/Snmp/AgentX/Handlers.hs b/src/Network/Protocol/Snmp/AgentX/Handlers.hs
--- a/src/Network/Protocol/Snmp/AgentX/Handlers.hs
+++ b/src/Network/Protocol/Snmp/AgentX/Handlers.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE ScopedTypeVariables #-}
 module Network.Protocol.Snmp.AgentX.Handlers 
 ( route )
 where
@@ -6,6 +7,7 @@
 import Control.Applicative
 import Control.Monad.State
 import Control.Monad.Reader
+import Control.Exception (RecSelError, handle)
 import qualified Data.Label as DL
 import qualified Data.Map as Map
 import Data.IORef
@@ -104,7 +106,7 @@
     where
       testFun v = do
           mib <- runMIBTree (findOne (DL.get vboid v) mcontext) 
-          testResult <- liftIO $ testSetAIO (val mib) (DL.get vbvalue v)
+          testResult <- liftIO $ handle (\(_ :: RecSelError) -> return NotWritable) $ testSetAIO (val mib) (DL.get vbvalue v)
           return $ if testResult == NoTestError
                       then Right v
                       else Left (Tagged testResult)
