Question/suggestion about exceptions

Graham St Jack grahams at acres.com.au
Mon Oct 23 17:10:13 PDT 2006


I have thought about writing an analysis tool, but it is all a bit 
tricky when you have overloaded operators and methods, and try/catch 
blocks. This is something the compiler has to do.


BCS wrote:
> Graham St Jack wrote:
>> Is there a way to automatically keep track of what exceptions may be 
>> thrown by a function or method? Ideally, what I am looking for is 
>> something like Java's "throws" keyword, but I would be happy with 
>> almost anything.
>>
>> It is way too hard to develop reliable code of any size that uses 
>> exceptions extensively, because as things change, you lose track of 
>> what exceptions are thrown from where. Some sort of compiler support 
>> would make this a lot easier.
>>
>> What I had in mind was an optional compiler warning and a new "throws" 
>> keyword. The compiler would (optionally) issue a warning if a function 
>> or method can throw an exception that it hasn't declared that it 
>> "throws". With this assistance, it becomes is easy to keep track of 
>> what can be thrown from where. Making it a warning and optional stops 
>> it from breaking existing code, and makes quick code hacks easy to 
>> write still.
>>
>> Thoughts?
> 
> I would think You could be able to get most of that from a code analysis 
> tool that dumps the type of all throw statements and a function call 
> tree. A a "linker" with a little DDoc like markup and you'd have quite a 
> tool.
> 
> OTOH this:
> 
> int foo(int function() fn)
> {
>     return fn();
> }
> 
> could throw anything, as could this:
> 
> int foo(Error err)
> {
>     throw err;
> }
> 
> so some odd cases might not be so clean.



More information about the Digitalmars-d mailing list