diff --git a/src-tauri/src/feat.rs b/src-tauri/src/feat.rs
index 7c73631746f5acf660549d7430bfe67eec8320a4..1648453aa66e22036cc60f6348b35d75d973acf8 100644
--- a/src-tauri/src/feat.rs
+++ b/src-tauri/src/feat.rs
@@ -169,7 +169,9 @@ pub async fn patch_clash(patch: Mapping) -> Result<()> {
             || patch.get("secret").is_some()
             || patch.get("external-controller").is_some()
         {
+            Config::generate()?;
             CoreManager::global().run_core().await?;
+            handle::Handle::refresh_clash();
         }
 
         // 更新系统代理
diff --git a/src/components/setting/mods/clash-port-viewer.tsx b/src/components/setting/mods/clash-port-viewer.tsx
index 53de768c66155a0ea95962c91eb22cb6db011787..9c55367a21d4f747bbd24638f5fa265a2aa90723 100644
--- a/src/components/setting/mods/clash-port-viewer.tsx
+++ b/src/components/setting/mods/clash-port-viewer.tsx
@@ -61,10 +61,14 @@ const ClashPortViewer = ({ handler }: Props) => {
     setOpen(false);
     if (port === config?.["mixed-port"]) return;
 
-    await patchClashConfig({ "mixed-port": port });
-    setGlobalClashPort(port);
-    Notice.success("Change Clash port successfully!", 1000);
-    mutateClash();
+    try {
+      await patchClashConfig({ "mixed-port": port });
+      setGlobalClashPort(port);
+      Notice.success("Change Clash port successfully!", 1000);
+      mutateClash();
+    } catch (err: any) {
+      Notice.error(err.message || err.toString(), 5000);
+    }
   });
 
   return (