Checking if a directory exists in FTP without relying on exception handling
up vote
3
down vote
favorite
I've written a method to check if a directory already exists on an FTP server. The only way I could see to make this work was to return a different result from the method if an exception is thrown - very bad practice in my opinion. Is there a better way to write this?
public bool DirectoryExists(string directory)
{
if (String.IsNullOrEmpty(directory))
throw new ArgumentException("No directory was specified to check for");
// Ensure directory is ended with / to avoid false positives
if (!directory.EndsWith("/"))
directory += "/";
try
{
var request = (FtpWebRequest)WebRequest.Create(directory);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(Username, Password);
using (request.GetResponse())
{
return true;
}
}
catch (WebException)
{
return false;
}
}
The connection hostname, username and password referred to within this block of code are auto properties set when the class is initialized.
c# .net exception ftp
add a comment |
up vote
3
down vote
favorite
I've written a method to check if a directory already exists on an FTP server. The only way I could see to make this work was to return a different result from the method if an exception is thrown - very bad practice in my opinion. Is there a better way to write this?
public bool DirectoryExists(string directory)
{
if (String.IsNullOrEmpty(directory))
throw new ArgumentException("No directory was specified to check for");
// Ensure directory is ended with / to avoid false positives
if (!directory.EndsWith("/"))
directory += "/";
try
{
var request = (FtpWebRequest)WebRequest.Create(directory);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(Username, Password);
using (request.GetResponse())
{
return true;
}
}
catch (WebException)
{
return false;
}
}
The connection hostname, username and password referred to within this block of code are auto properties set when the class is initialized.
c# .net exception ftp
add a comment |
up vote
3
down vote
favorite
up vote
3
down vote
favorite
I've written a method to check if a directory already exists on an FTP server. The only way I could see to make this work was to return a different result from the method if an exception is thrown - very bad practice in my opinion. Is there a better way to write this?
public bool DirectoryExists(string directory)
{
if (String.IsNullOrEmpty(directory))
throw new ArgumentException("No directory was specified to check for");
// Ensure directory is ended with / to avoid false positives
if (!directory.EndsWith("/"))
directory += "/";
try
{
var request = (FtpWebRequest)WebRequest.Create(directory);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(Username, Password);
using (request.GetResponse())
{
return true;
}
}
catch (WebException)
{
return false;
}
}
The connection hostname, username and password referred to within this block of code are auto properties set when the class is initialized.
c# .net exception ftp
I've written a method to check if a directory already exists on an FTP server. The only way I could see to make this work was to return a different result from the method if an exception is thrown - very bad practice in my opinion. Is there a better way to write this?
public bool DirectoryExists(string directory)
{
if (String.IsNullOrEmpty(directory))
throw new ArgumentException("No directory was specified to check for");
// Ensure directory is ended with / to avoid false positives
if (!directory.EndsWith("/"))
directory += "/";
try
{
var request = (FtpWebRequest)WebRequest.Create(directory);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(Username, Password);
using (request.GetResponse())
{
return true;
}
}
catch (WebException)
{
return false;
}
}
The connection hostname, username and password referred to within this block of code are auto properties set when the class is initialized.
c# .net exception ftp
c# .net exception ftp
edited Mar 2 '16 at 3:29
Jamal♦
30.2k11115226
30.2k11115226
asked Dec 23 '14 at 2:51
Michael A
8392829
8392829
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
don't omit braces
{}
for singleif
statements. Using braces in this case will make your code less errorprone.
you want to return a state, which represents a specific states which shouldn't be restricted to only two states. This just calls for an enum.
public enum FtpResponse
{
DirectoryExists, DirectoryNotFound, DirectoryNotSpecified
}
public FtpResponse DirectoryExists(string directory)
{
if (String.IsNullOrEmpty(directory))
{
return FtpResponse.DirectoryNotSpecified;
}
// the rest of the code
}
4
I think it's better to throw an argument exception if the argument is invalid rather that returning another enum value. The single lineif
suggestion isn't helpful either, it's just one of the useless programmer holy wars.
– CodesInChaos
Mar 3 '15 at 13:44
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
don't omit braces
{}
for singleif
statements. Using braces in this case will make your code less errorprone.
you want to return a state, which represents a specific states which shouldn't be restricted to only two states. This just calls for an enum.
public enum FtpResponse
{
DirectoryExists, DirectoryNotFound, DirectoryNotSpecified
}
public FtpResponse DirectoryExists(string directory)
{
if (String.IsNullOrEmpty(directory))
{
return FtpResponse.DirectoryNotSpecified;
}
// the rest of the code
}
4
I think it's better to throw an argument exception if the argument is invalid rather that returning another enum value. The single lineif
suggestion isn't helpful either, it's just one of the useless programmer holy wars.
– CodesInChaos
Mar 3 '15 at 13:44
add a comment |
up vote
0
down vote
don't omit braces
{}
for singleif
statements. Using braces in this case will make your code less errorprone.
you want to return a state, which represents a specific states which shouldn't be restricted to only two states. This just calls for an enum.
public enum FtpResponse
{
DirectoryExists, DirectoryNotFound, DirectoryNotSpecified
}
public FtpResponse DirectoryExists(string directory)
{
if (String.IsNullOrEmpty(directory))
{
return FtpResponse.DirectoryNotSpecified;
}
// the rest of the code
}
4
I think it's better to throw an argument exception if the argument is invalid rather that returning another enum value. The single lineif
suggestion isn't helpful either, it's just one of the useless programmer holy wars.
– CodesInChaos
Mar 3 '15 at 13:44
add a comment |
up vote
0
down vote
up vote
0
down vote
don't omit braces
{}
for singleif
statements. Using braces in this case will make your code less errorprone.
you want to return a state, which represents a specific states which shouldn't be restricted to only two states. This just calls for an enum.
public enum FtpResponse
{
DirectoryExists, DirectoryNotFound, DirectoryNotSpecified
}
public FtpResponse DirectoryExists(string directory)
{
if (String.IsNullOrEmpty(directory))
{
return FtpResponse.DirectoryNotSpecified;
}
// the rest of the code
}
don't omit braces
{}
for singleif
statements. Using braces in this case will make your code less errorprone.
you want to return a state, which represents a specific states which shouldn't be restricted to only two states. This just calls for an enum.
public enum FtpResponse
{
DirectoryExists, DirectoryNotFound, DirectoryNotSpecified
}
public FtpResponse DirectoryExists(string directory)
{
if (String.IsNullOrEmpty(directory))
{
return FtpResponse.DirectoryNotSpecified;
}
// the rest of the code
}
edited Dec 23 '14 at 6:14
answered Dec 23 '14 at 5:03
Heslacher
44.8k460155
44.8k460155
4
I think it's better to throw an argument exception if the argument is invalid rather that returning another enum value. The single lineif
suggestion isn't helpful either, it's just one of the useless programmer holy wars.
– CodesInChaos
Mar 3 '15 at 13:44
add a comment |
4
I think it's better to throw an argument exception if the argument is invalid rather that returning another enum value. The single lineif
suggestion isn't helpful either, it's just one of the useless programmer holy wars.
– CodesInChaos
Mar 3 '15 at 13:44
4
4
I think it's better to throw an argument exception if the argument is invalid rather that returning another enum value. The single line
if
suggestion isn't helpful either, it's just one of the useless programmer holy wars.– CodesInChaos
Mar 3 '15 at 13:44
I think it's better to throw an argument exception if the argument is invalid rather that returning another enum value. The single line
if
suggestion isn't helpful either, it's just one of the useless programmer holy wars.– CodesInChaos
Mar 3 '15 at 13:44
add a comment |
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f74588%2fchecking-if-a-directory-exists-in-ftp-without-relying-on-exception-handling%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown