Which is best: Code Snippet 1 or Code Snippet 2 ? And Why?
/* Code Snippet 1
*
* Write try-catch in function definition
*/
void Main(string[] args)
{
AddMe();
}
void AddMe()
{
try
{
// Do operations...
}
catch(Exception e)
{
}
}
/* Code Snippet 2
*
* Write try-catch where we call the function.
*/
void Main(string[] args)
{
try
{
AddMe();
}
catch (Exception e)
{
}
}
void AddMe()
{
// Do operations...
}
The real question to ask is “What is AddMe’s contract to the rest of the world?” If AddMe represents the be-all do-all of an interface and correctly handles any exception that encounters in the appropriate way, then sure – let it catch it. If AddMe doesn’t or can’t know what to do with an exception, then it should throw and defer the handling to the calling code.