Walter Bright:

Even if that is what you wanted, you won't get that from FileException, as it will only show file/lines emanating from calls inside std.file, not from higher level callers.

Can't we use the template arguments like __LINE__ to offer the line of code in the IO function in user code?


Besides, take a bit of care when formulating a string for exceptions, and you won't have any trouble grepping for it. This isn't rocket science.

The exception is generated inside library code, not in user code. There's nothing to grep in the user code. The D script often looks like this:

void main() {
    import std.stdio;
    auto file_name = "some_file;
    // some code here
    auto file_name1 = file_name ~ "1.txt";
    auto f1 = File(file_name1);
    // some code here
    auto file_name2 = file_name ~ "2.txt";
    auto f2 = File(file_name2, "w");
    // some code here
}


Presenting internal debugging data to users for input/environmental errors is just bad programming practice.7 We shouldn't be enshrining it in Phobos and presenting it as a professional way to code.

The file/line of code is not meant to replace serious practices for dealing with I/O failures in serious D programs.

Bye,
bearophile

Reply via email to