X0Refraction
Joined 12 years ago
Joined 12 years ago
Those erratic behaviours you talk about are generally illegal in most countries as well with drink driving, public intoxication, assault laws etc.
Drinking does have some positives as well, pubs are one of the few third spaces we have remaining. I know there are alternatives, but there are people who won't socialise in a cafe or a book club, but will go to the pub to see the regulars. Considering lots of Western countries have loneliness epidemics I think there'd be a downside to removing that option.
Drinking does seem to lubricate social situations, weed can help with pain etc. The only upside from smoking for the individual as far as I can tell is that it fixes the problem it created from you being addicted to it i.e. you get calmer when you get your fix.
I think it's very rare though for a smoker to not smoke several a day. A friend of mine was that rare breed and would buy a 10 pack occasionally - usually on a Friday and it'd be gone by Monday - but that would maybe be once a month. I think every other smoker I've met though goes through that amount every day.
So it seems to me the average smoker is much more likely to become a burden on a nationalised health service than the average drinker. There's more to this of course, smoking to excess generally doesn't increase the chances of you getting into a fight like drinking does for some people, but social pressure counters that partially too.
I think it makes a good point that some of the difference here is just perception due to dependencies in C/C++ being less immediately visible since they're dynamically loaded. To some degree that is a plus though as you likely trust the maintainers of your OS distribution to provide stable, supported libraries.
As other commenters have said, perhaps this is an area where the Rust maintainers could provide some kind of extended standard library where they don't guarantee backwards compatibility forever, but do provide guarantees about ongoing fixes for security issues.
You've never seen a try that has more than 1 catch block for different exception types?
> There are many different kinds of values. There really aren't that many different kinds of error - there's "transient error that you might want to retry", "programmer called the API wrong", and that's about it, most other cases (like bad user input) probably shouldn't be exceptions.
Do you think bad user input should be a result type? Because exceptions are essentially the same thing.
You've hit on a couple of problems with exceptions in Java though. The first is I think the default for checked exceptions should be no stack trace. As the designer of the method you've left it to the caller to decide to handle it or not, if they choose to turn it into an unchecked exception then I believe that is where the stack trace should start from. Assuming there's enough context in the checked exception the designer of the method gave you everything you needed to handle it so why do we need to capture that part of the stack trace? If it ends up getting logged the source of the issue was where it was changed to an unchecked exception.
The other issue comes down to usability. Try catch blocks aren't expressions so if you want to default something in the case of a checked exception it's a lot of low information density lines. Converting to an unchecked exception is also more ceremony than it really needs to be, but there's not really a reason why it couldn't be made simpler with some syntax sugar.