digitalmars.D.learn - Problem with Exceptions in Constructor
- Mike Brown (30/30) Jun 11 2021 Hi all,
- Mike Parker (3/5) Jun 11 2021 No, that code is fine. You're passing a string literal, so
- Mike Brown (9/16) Jun 12 2021 Hi Mike,
Hi all,
AddressSanitizer is throwing an access-violation error - I've
managed to boil it down to this example:
```d
import std.stdio;
class example: Exception {
this(string msg, string file = __FILE__, size_t line = __LINE__)
{
super(msg, file, line);
}
}
class test {
this() {
throw new example("this is a test");
}
}
void main() {
try {
auto t = new test();
} catch (example e) {
writeln(e.msg);
}
}
```
Compiled with:
ldc2.exe -g -fsanitize='address' .\test.d -of='test.exe'
The error is flagged on the writeln(e.msg). Do I need to do
something special to pass a string to an exception? dup?
Kind regards,
Mike Brown
Jun 11 2021
On Friday, 11 June 2021 at 20:09:22 UTC, Mike Brown wrote:The error is flagged on the writeln(e.msg). Do I need to do something special to pass a string to an exception? dup?No, that code is fine. You're passing a string literal, so there's no need for a dup.
Jun 11 2021
On Saturday, 12 June 2021 at 02:19:21 UTC, Mike Parker wrote:On Friday, 11 June 2021 at 20:09:22 UTC, Mike Brown wrote:Hi Mike, Thank you - OK, I had another issue that was related to an out of date LDC2 and Druntime. But that now looks to be sorted. I have set up a VM of Linux Mint. The code doesn't raise an error on there. I guess this might be a bug in the windows release? I will log it Kind regards, Mike BrownThe error is flagged on the writeln(e.msg). Do I need to do something special to pass a string to an exception? dup?No, that code is fine. You're passing a string literal, so there's no need for a dup.
Jun 12 2021








Mike Brown <mikey.be gmail.com>