[Issue 4969] New: nothrow check can't handle multiple catches
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Oct 1 20:55:51 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4969
Summary: nothrow check can't handle multiple catches
Product: D
Version: unspecified
Platform: Other
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: jmdavisProg at gmx.com
--- Comment #0 from Jonathan M Davis <jmdavisProg at gmx.com> 2010-10-01 20:55:33 PDT ---
This code should compile:
class MyException : Exception
{
this()
{
super("An exception!");
}
}
void throwAway()
{
throw new MyException;
}
void cantthrow() nothrow
{
try
throwAway();
catch(MyException me)
assert(0);
catch(Exception e)
assert(0);
}
void main()
{
}
It doesn't. Instead, you get this error:
d.d(14): Error: function d.cantthrow 'cantthrow' is nothrow yet may throw
If you remove catch(MyException e) and its body, then the program compiles.
Given that the catch block that catches MyException cannot throw an exception
of its own and that the catch block following it catches Exception (and
therefore will catch all exceptions) and cannot throw an exception, the
compiler should be able to clearly determine that no exception can escape
cantthrow, but apparently, it can't.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list