Python, 91/9291/92 67 bytes
This was fun!
92 if you count trailing newline
I'm fairly sure this is correct. Please tell me if otherwiseNow I know about assert:
f=9*(5);s='f=9*(5);s=%r;print(int((1/(s='s=%r;assert len(s)-f)))*==34;print(s%%s))';print(int((1/(';assert len(s)-f)))*==34;print(s%s))
If a char from string is removed, div zero error. Others are syntax errors (nonmatched brackets, can't call int if a * is removed, operationassert error if int is removed, len takes one arg, ss does not exist, is a quote is removed, string doesn't work, = needed for variables, prin, rint, pint, etc. do not existI would have done this sooner had I known of this feature, etcassert.)