Reputation: 783
This function should find the longest file in a path it get as parameter.
It seems to work well the problem is I’m not sure how to handle exceptions.
In case of PathTooLongException I want to set _MaxPath to -2 and exit the function, in case of other exception set it to -1 and exit the function else set it to longest file path.
I'm not sure what is the right way to handle exceptions in that case.
Probably a dumb question but I’m new with C#...
static int _MaxPath = 0;
public static void GetLongestFilePath(string p)
{
try
{
foreach (string d in Directory.GetDirectories(p))
{
foreach (string f in Directory.GetFiles(d))
{
if (f.Length > _MaxPath)
{
_MaxPath = f.Length;
}
}
GetLongestFilePath(d);
}
}
catch (Exception e)
{
if (e is PathTooLongException)
{
_MaxPath = -1;
}
}
finally
{
System.Environment.Exit(-99);
}
}
Upvotes: 0
Views: 59
Reputation: 1135
You can catch the specific exception type in its own block:
static int _MaxPath = 0;
public static void GetLongestFilePath(string p)
{
try
{
foreach (string d in Directory.GetDirectories(p))
{
foreach (string f in Directory.GetFiles(d))
{
if (f.Length > _MaxPath)
{
_MaxPath = f.Length;
}
}
GetLongestFilePath(d);
}
}
catch (PathTooLongException e)
{
_MaxPath = -2;
}
catch (Exception e)
{
_MaxPath = -1;
}
finally
{
System.Environment.Exit(-99);
}
}
Upvotes: 1
Reputation: 430
You can have multiple catch blocks with multiple Exception types:
try
{
// ...
}
catch (PathTooLongException e)
{
_MaxPath = -2;
return;
}
catch (Exception e) //anything else
{
_MaxPath = -1;
// ...
}
finally
{
// ...
}
Upvotes: 1