fix: narrow bare except Exception to specific types where safe

Replace broad except Exception with specific exception types in 6
sites where the expected failure mode is well-defined:

- normalize.py: OSError for file read, ImportError for optional import
- miner.py: OSError for file read_text
- entity_detector.py: OSError for file read in scan loop
- convo_miner.py: (OSError, ValueError) for normalize which reads
  and parses files
- entity_registry.py: (URLError, OSError, JSONDecodeError, KeyError)
  for Wikipedia lookup fallback

ChromaDB except Exception sites (~30) are left broad for now.
chromadb.errors defines NotFoundError, DuplicateIDError,
InvalidDimensionException etc., but narrowing those sites requires
importing from chromadb.errors and validating across supported
versions (>=0.4.0). MCP server handlers also left broad for
resilience.
This commit is contained in:
adv3nt3
2026-04-07 13:51:27 +02:00
parent 1782628b8a
commit 312d380aab
5 changed files with 6 additions and 6 deletions
+1 -1
View File
@@ -301,7 +301,7 @@ def mine_convos(
# Normalize format
try:
content = normalize(str(filepath))
except Exception:
except (OSError, ValueError):
continue
if not content or len(content.strip()) < MIN_CHUNK_SIZE:
+1 -1
View File
@@ -660,7 +660,7 @@ def detect_entities(file_paths: list, max_files: int = 10) -> dict:
all_text.append(content)
all_lines.extend(content.splitlines())
files_read += 1
except Exception:
except OSError:
continue
combined_text = "\n".join(all_text)
+1 -1
View File
@@ -256,7 +256,7 @@ def _wikipedia_lookup(word: str) -> dict:
"note": "not found in Wikipedia — likely a proper noun or unusual name",
}
return {"inferred_type": "unknown", "confidence": 0.0, "wiki_summary": None}
except Exception:
except (urllib.error.URLError, OSError, json.JSONDecodeError, KeyError):
return {"inferred_type": "unknown", "confidence": 0.0, "wiki_summary": None}
+1 -1
View File
@@ -248,7 +248,7 @@ def process_file(
try:
content = filepath.read_text(encoding="utf-8", errors="replace")
except Exception:
except OSError:
return 0
content = content.strip()
+2 -2
View File
@@ -27,7 +27,7 @@ def normalize(filepath: str) -> str:
try:
with open(filepath, "r", encoding="utf-8", errors="replace") as f:
content = f.read()
except Exception as e:
except OSError as e:
raise IOError(f"Could not read {filepath}: {e}")
if not content.strip():
@@ -213,7 +213,7 @@ def _messages_to_transcript(messages: list, spellcheck: bool = True) -> str:
from mempalace.spellcheck import spellcheck_user_text
_fix = spellcheck_user_text
except Exception:
except ImportError:
_fix = None
else:
_fix = None