5 ms·
There's no special tooling to catch this, because nobody catches an error with if-else—it's simply not idiomatic. Everyone uses switch statements in the catch b
by TUSF 1y ago
There's no special tooling to catch this, because nobody catches an error with if-else—it's simply not idiomatic. Everyone uses switch statements in the catch block, and I've never seen anybody using anything other than switch, when catching an error.
- veber-alex 1y agoBut why? If I just need to check for 1 specific error and do something why do I need a switch? In Rust you have both "match" (like switch) and "if let" which just pattern matches one variant but both are properly checked by the compiler to have only valid values.
- arwalk 1y agoThe real problem is not about the if-else, its that he's comparing to the global error set, and not to the FileError error set he created specifically to define AccessDenied.
- love2read 1y agoThe real problem is that this compiles without error
- love2read 1y ago“There’s no specific tooling to catch this, because nobody[…]”. So? This is a standard library/language feature, which is usually the first place people go for features in the language. To say that nobody uses it is stupid.
- dminik 1y agoBoth the Zig standard library as well as several third party projects do check errors like this. I already commented on Zig compiler/stdlib code itself, but here's Tigerbeetle and Bun, the two biggest(?) Zig codebases: https://github.com/search?q=repo%3Atigerbeetle%2Ftigerbeetle%20%22%3D%3D%20error.%22&type=code https://github.com/search?q=repo%3Atigerbeetle%2Ftigerbeetle... https://github.com/search?q=repo%3Aoven-sh%2Fbun%20%22%3D%3D%20error.%22&type=code https://github.com/search?q=repo%3Aoven-sh%2Fbun%20%22%3D%3D...
- dminik 1y agoOk, while it's cool that the TigerBeetle link now shows no matches (down from two) the comment now feels wrong. Anyways, you guys left in the `!= error.` checks, so here's some snapshots that hopefully won't be invalidated :P https://github.com/tigerbeetle/tigerbeetle/blob/b173fdc8270016e8c29da06640c726523e8acb90/src/vsr/multi_batch.zig#L490 https://github.com/tigerbeetle/tigerbeetle/blob/b173fdc82700... https://github.com/tigerbeetle/tigerbeetle/blob/b173fdc8270016e8c29da06640c726523e8acb90/src/state_machine_fuzz.zig#L104 https://github.com/tigerbeetle/tigerbeetle/blob/b173fdc82700... (different file, same check.)
- matklad 1y agoGood catch of != thanks!