On Friday, 2 June 2017 at 07:33:05 UTC, Vasileios Anagnostopoulos
wrote:
On Thursday, 1 June 2017 at 17:03:52 UTC, Ali Çehreli wrote:
[...]
But still I believe that @nothrow should be mandatory if there
is no possibility for a function to throw something. I
understand that in the DLL/LIB level this is not possible.
However, at least in the .di level it should be there.
And if you want my two cents, after reading a lot I came to the
"personal" conclusion that Exception objects are wrong. For me
it is enough to have something like
void A() {
raise;
}
void B() {
raise;
}
void C() {
raise;
}
void D () nothrow { //the compiler inferred from body that D
cannever throw
scope(failure) {
writeln("The end of the world");
exit(1);
}
try {
A();
} else try {
B();
} else {
C();
}
}
Or simply
void A() {
raise;
}
void B() nothrow {
}
void D () nothrow { //the compiler inferred from body that D
cannever throw
try {
A();
} else {
B();
}
}