On Sunday, 3 December 2017 at 22:33:40 UTC, kdevel wrote:
On Sunday, 3 December 2017 at 14:58:03 UTC, Basile B. wrote:
In this case i'd go for a typed pointer, e.g

---
immutable struct Configuration
{
    this(string){/*load some file...*/}
    int value;
}

Configuration* config;

void main()
{
    try config = new Configuration("config.sdl");
    catch(Exception){}
    // config.value = 42; // ok, read only
}
---

When config is null, e.g. in case "load some file..." threw, you get a segfault. No error handling at all!

I don't follow you...the file thing happens in the __ctor. Exceptions are well handled. Maybe you've missed the try (w/o braces) ?

---
immutable struct Configuration {
    this(string){/*parse_config...*/}
}

Configuration* config;

int main() {
    try {
        config = new Configuration("config.sdl");
        // instead of "conf = parse_config("config.sdl");"
    } catch(Exception e){
std.stdio.stderr.writeln("Error reading configuration file: ", e.msg);
        return 1;
    }
}
---


Reply via email to