On Friday, 17 September 2021 at 11:10:33 UTC, seany wrote:
I have now this function, as a private member in a Class :
} catch (RangeError er) {
I can't remember if you can catch an index OOB error but try
`catch (Throwable er)` will work if it is catchable at all and
you can figure out what kind of Error you have by printing its
name.
"Attempt to take address of value not located in memory" ? I
am not even calling / accessing a pointer. I am trying to
extract a value outside an array bound.
`Type[]` arrays in D are effectively struct {size_t length; Type*
ptr; } under the hood. Your problem is the array has no elements
which is why trying to extract a value outside an array bound is
an irrecoverable error.
with the bound checking operation in place, would the bound
error be triggered before the attempt to take unavailable
address error has a chance to trigger?
with a null array of zero length `arr`, `arr[0]` with bounds
check enabled will fail the bounds check before it tries to
dereference the pointer. if you try `arr.ptr[0]` to bypass the
bounds checking (which is a very bad idea!) you will then try to
load from an invalid memory address and crash.