One error is that sometimes people use material implication inside of for-all, and forget that if the antecedent is always false than the entire expression is always true. I specifically created a quantifier called allsome that counters that problem: https://dwheeler.com/essays/allsome.html
Another problem is using material implication inside there is quantifier. That is almost always a mistake, as usually and is meant instead. However, that is pretty easy to detect automatically. Both Why3 and SPARK already attack that.
According to this theory, there's nothing wrong with the truth-functional meaning of "X implies Y". We just need to take into account what is implied by asserting "X implies Y", rather than e.g. "not-X", or "X and Y".
Same with disjunction: "X or Y" is true if we know that X is true. However, if we assert "X or Y", it is implied that we're not certain that X is true, otherwise we would have used "X", which is the simplest way to convey what that fact.
This is known as Grice's Pragmatic Defence of Truth-Functionality.
https://plato.stanford.edu/entries/conditionals/#GriPraDefTr...
https://plato.stanford.edu/entries/logic-relevance/
And also the related subject of necessity and sufficiency:
https://plato.stanford.edu/entries/necessary-sufficient/
Btw, all these are issues with material implication in propositional logics. I'm not sure, but I think, in first-order (and, I guess, higher order) logics you can determine the relevance of premises to conclusions more easily, thanks to quantifiers.
For example, if I say that ∀x,y P(x) → Q(y), or even P(x) → P(y), it's easy to see that the premises are irrelevant to the conclusions (and if not, I can always add that x ≠ y and, in higher order logics, that P ≠ Q).
But, I don't know, there may be something I'm missing. Am I wrong about this?
Non-classical logics don't typically feature a material conditional.
On the other hand I found intuitionistic implication more... intuitive :)