Honestly I'd say don't install mods that overwrite core files. I only install mods that need to be enabled/disabled in the launcher. Then if I get a crash, I can simply disable my mods and see if it still happens.
I'm being deliberate in my mod not to do anything to break save compatibility and to make all the options fully modular. Every aspect of it can be toggled off, and if it's off it doesn't do anything at all. That way I can add/remove it to an existing save without issues, and toggle things on and off if anything happens. That way if a new update or another mod breaks one aspect of it it can just be turned off until some fix can be found for it. I also started adding null checks to all my variables, even the ones that shouldn't be able to be null lol. I already fixed one crash by adding a null check for member rosters of parties. I don't know how the person with the crash had a null member roster of one of their garrisons since all the code that would remove it just removes the whole party instead, but with all the mods out there? The core game doesn't even null check any of its member rosters, only the parties.
Looking at some of the mods out there with a decompiler leads to some facepalm moments, even for someone like me who barely knows C# (before this I just knew barely enough to edit some websites written in it). Dividing things by variables that could equal zero, or using Math.Pow on a number that can be negative.
For those who don't know, dividing by zero is bad - if done to a float it gives you infinity. And Math.Pow returns NaN if used on a negative number. And NaN is treated as an infinite value too. Stuff like this is how mods end up jacking your skills up to 1023.