Is there an analysis/post-mortem on the QuadrigaCX snafu anywhere? I would be very interested in reading a detailed account of exactly what went wrong.
Also, it's normal practice for a contract to throw an exception if ETH is sent to any function that doesn't know how to deal with it. This includes the "fallback function," which is what runs if no other function in the contract is called. With recent versions of Solidity, this throw is built in, unless you mark a function "payable." But they were using an older contract, and there was no protection built into their fallback, and that's what made them vulnerable to this issue in the first place.