Timeline for Exceptions, error codes and discriminated unions
Current License: CC BY-SA 4.0
44 events
| when toggle format | what | by | license | comment | |
|---|---|---|---|---|---|
| Nov 25, 2021 at 12:57 | comment | added | Caleth | IList<Point> Intersection(Line a, Line b) might return 0, 1 or infinitely many Points, so you might want None | Point | Line Intersection(Line a, Line b) | |
| Sep 6, 2019 at 12:11 | comment | added | jrh | I have to agree with KRyan, the first part of this answer is rather unnecessary. I think the rest of the answer is quite good though. | |
| Dec 14, 2018 at 21:08 | history | edited | candied_orange | CC BY-SA 4.0 | added 85 characters in body |
| Aug 19, 2018 at 12:42 | history | edited | candied_orange | CC BY-SA 4.0 | edited body |
| Jun 11, 2018 at 18:42 | history | edited | candied_orange | CC BY-SA 4.0 | added 14 characters in body |
| Jun 11, 2018 at 18:03 | history | edited | candied_orange | CC BY-SA 4.0 | edited body |
| Jun 10, 2018 at 22:28 | history | edited | candied_orange | CC BY-SA 4.0 | added 2 characters in body |
| Jun 10, 2018 at 22:21 | history | edited | candied_orange | CC BY-SA 4.0 | added 2 characters in body |
| Jun 7, 2018 at 22:30 | history | edited | candied_orange | CC BY-SA 4.0 | edited body |
| Jun 7, 2018 at 18:53 | history | edited | candied_orange | CC BY-SA 4.0 | added 9 characters in body |
| Jun 7, 2018 at 16:18 | history | edited | candied_orange | CC BY-SA 4.0 | added 685 characters in body |
| Jun 7, 2018 at 15:25 | history | edited | candied_orange | CC BY-SA 4.0 | added 5 characters in body |
| Jun 7, 2018 at 15:18 | history | edited | candied_orange | CC BY-SA 4.0 | added 5 characters in body |
| Jun 7, 2018 at 13:32 | history | edited | candied_orange | CC BY-SA 4.0 | added 51 characters in body |
| Jun 7, 2018 at 13:21 | history | edited | candied_orange | CC BY-SA 4.0 | edited body |
| Jun 7, 2018 at 13:12 | history | edited | candied_orange | CC BY-SA 4.0 | added 188 characters in body |
| Jun 7, 2018 at 3:59 | history | edited | candied_orange | CC BY-SA 4.0 | added 2 characters in body |
| Jun 7, 2018 at 3:47 | history | edited | candied_orange | CC BY-SA 4.0 | added 2 characters in body |
| Jun 7, 2018 at 3:41 | history | edited | candied_orange | CC BY-SA 4.0 | added 2 characters in body |
| Jun 6, 2018 at 11:03 | history | edited | candied_orange | CC BY-SA 4.0 | added 59 characters in body |
| Jun 6, 2018 at 0:19 | history | edited | candied_orange | CC BY-SA 4.0 | added 112 characters in body |
| Jun 5, 2018 at 21:08 | history | edited | candied_orange | CC BY-SA 4.0 | added 367 characters in body |
| Jun 5, 2018 at 20:49 | history | edited | candied_orange | CC BY-SA 4.0 | added 2695 characters in body |
| Jun 5, 2018 at 16:05 | comment | added | KRyan | The entire first section of this answer reads strongly as though you stopped reading the question after the quoted sentence. The question acknowledges that crashing the program is superior to moving on into undefined behavior: they are contrasting run-time crashes not with continued, undefined execution, but rather with compile-time errors that prevent you from even building the program without considering the potential error and dealing with it (which may end up being a crash if there’s nothing else to be done, but it will be a crash because you want it to be, not because you forgot it). | |
| Jun 5, 2018 at 3:09 | history | edited | candied_orange | CC BY-SA 4.0 | deleted 43 characters in body |
| Jun 4, 2018 at 20:58 | history | edited | candied_orange | CC BY-SA 4.0 | Rovert Harvey is picking my nits. |
| Jun 4, 2018 at 20:17 | comment | added | Robert Harvey | There's nothing wrong with mixing conventions if you can establish boundaries, which is what encapsulation is all about. | |
| Jun 4, 2018 at 19:31 | history | edited | candied_orange | CC BY-SA 4.0 | added 2 characters in body |
| Jun 4, 2018 at 17:10 | comment | added | Warbo | I think of exceptions more like a COMEFROM instruction rather than a GOTO, since throw doesn't actually know/say where we'll jump to ;) | |
| Jun 4, 2018 at 15:14 | comment | added | supercat | In most cases, what would be necessary would be to subdivide a job into portions which could crash without disrupting the overall process. If a spindle hole in the punched card for one billing record caused a program to receive a negative number it couldn't handle, it may be appropriate to abort the processing of that customer's account, but if there were 20,000 accounts that needed to be processed and a failure occurs halfway through, it should be possible to process the remaining 10,000 while diagnosing the problem, without having to reprocess the first 10,000. | |
| Jun 4, 2018 at 14:43 | comment | added | OrangeDog | "we don't often abuse exceptions to create spaghetti code as we used to with goto" - read any Python lately? ;) | |
| Jun 4, 2018 at 14:09 | comment | added | user470365 | The railway programming looks like using checked exceptions with different syntax (and sometimes significant diffrence of not supporting/paying for stack trace information). | |
| Jun 4, 2018 at 14:00 | history | edited | candied_orange | CC BY-SA 4.0 | added 19 characters in body |
| Jun 4, 2018 at 13:42 | history | edited | candied_orange | CC BY-SA 4.0 | added 110 characters in body |
| S Jun 4, 2018 at 13:39 | history | suggested | Pierre Arlaud | CC BY-SA 4.0 | minor improvement |
| Jun 4, 2018 at 12:50 | review | Suggested edits | |||
| S Jun 4, 2018 at 13:39 | |||||
| Jun 4, 2018 at 12:06 | comment | added | Amit Joshi | I guess it is worth adding in the answer that returning error codes will omit the valuable stack trace. Code from OP may not be the problem; but code from other sources will still use Exception and OP will return error code where stack trace data will be lost. Debugging will be very difficult in that case. Great answer by the way; +1 | |
| Jun 4, 2018 at 12:03 | history | edited | Deduplicator | CC BY-SA 4.0 | fixed typos |
| Jun 4, 2018 at 11:29 | history | edited | candied_orange | CC BY-SA 4.0 | deleted 14 characters in body |
| Jun 4, 2018 at 11:16 | history | edited | candied_orange | CC BY-SA 4.0 | deleted 3 characters in body; deleted 2 characters in body; added 5 characters in body |
| Jun 4, 2018 at 10:27 | comment | added | Gusdor | Logically, you are correct. However, each box in this particular diagram represents a monadic bind operation. bind includes (perhaps creates!) the red track. I recommend watching the full presentation. It is interesting and Scott is a great speaker. | |
| Jun 4, 2018 at 9:33 | comment | added | Flater | Wouldn't it be more appropriate if the red track was below the boxes, thus not running through them? | |
| Jun 4, 2018 at 4:08 | history | edited | candied_orange | CC BY-SA 4.0 | added 8 characters in body |
| Jun 4, 2018 at 3:58 | history | answered | candied_orange | CC BY-SA 4.0 |