diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for pms-infra-procspawn
 
+## 0.0.6.0 -- 2025-08-24
+
+* Fixed exception handle.
+
 ## 0.0.5.0 -- 2025-08-17
 
 * Fixed proc-message.
diff --git a/pms-infra-procspawn.cabal b/pms-infra-procspawn.cabal
--- a/pms-infra-procspawn.cabal
+++ b/pms-infra-procspawn.cabal
@@ -20,7 +20,7 @@
 -- PVP summary:     +-+------- breaking API changes
 --                  | | +----- non-breaking API additions
 --                  | | | +--- code changes with no API change
-version:            0.0.5.0
+version:            0.0.6.0
 
 -- A short (one-line) description of the package.
 synopsis:           pms-infra-procspawn
diff --git a/src/PMS/Infra/ProcSpawn/DS/Core.hs b/src/PMS/Infra/ProcSpawn/DS/Core.hs
--- a/src/PMS/Infra/ProcSpawn/DS/Core.hs
+++ b/src/PMS/Infra/ProcSpawn/DS/Core.hs
@@ -228,7 +228,7 @@
   STM.atomically (STM.takeTMVar procVar) >>= \case
     Just p -> do
       STM.atomically $ STM.putTMVar procVar $ Just p
-      hPutStrLn stderr "[ERROR] PMS.Infrastructure.DS.Core.procSpawnTask: pms is already connected."
+      hPutStrLn stderr "[ERROR] PMS.Infrastructure.DS.Core.procSpawnTask: process is already running."
       toolsCallResponse resQ (cmdDat^.DM.jsonrpcProcRunCommandData) (ExitFailure 1) "" "process is already running."
     Nothing -> do
       flip E.catchAny errHdl $ runProc procVar cmd args addEnv
@@ -283,13 +283,13 @@
     Just p -> do
       STM.atomically $ STM.putTMVar procVar $ Just p
       hPutStrLn stderr "[ERROR] PMS.Infra.ProcSpawn.DS.Core.genProcCMDTask: process is already running."
-      E.throwString "[ERROR] PMS.Infra.ProcSpawn.DS.Core.genProcCMDTask: process is already running."
-    Nothing -> runProc procVar "cmd" [] []
+      toolsCallResponse resQ (cmdDat^.DM.jsonrpcProcRunCommandData) (ExitFailure 1) "" "process is already running."
+    Nothing -> flip E.catchAny errHdl $ runProc procVar "cmd" [] []
 
   STM.atomically (STM.readTMVar procVar) >>= \case
     Nothing -> do
       hPutStrLn stderr "[ERROR] PMS.Infra.ProcSpawn.DS.Core.genProcCMDTask: process is not started."
-      E.throwString "[ERROR] PMS.Infra.ProcSpawn.DS.Core.genProcCMDTask: process is not started."
+      toolsCallResponse resQ (cmdDat^.DM.jsonrpcProcRunCommandData) (ExitFailure 1) "" "process is not started."
     Just procDat -> do
       let wHdl = procDat^.wHdLProcData
           msg  =  "chcp 65001 & prompt $P$G$G$G"
@@ -349,7 +349,7 @@
     Just p -> do
       STM.atomically $ STM.putTMVar procVar $ Just p
       hPutStrLn stderr "[ERROR] PMS.Infra.ProcSpawn.DS.Core.genProcPSTask: process is already running."
-      E.throwString "[ERROR] PMS.Infra.ProcSpawn.DS.Core.genProcPSTask: process is already running."
+      toolsCallResponse resQ (cmdDat^.DM.jsonrpcProcRunCommandData) (ExitFailure 1) "" "process is already running."
     Nothing -> runProc procVar "powershell" ["-NoLogo", "-NoExit", "-Command", initCmd] []
 
   STM.atomically (STM.readTMVar procVar) >>= \case
