我在注册表单中检查上传的图像,我需要使用try catch块.这是我的代码:
public bool CheckFileType(string FileName)
{
string Ext = Path.GetExtension(FileName);
switch (Ext.ToLower())
{
case ".gif":
return true;
break;
case ".JPEG":
return true;
break;
case ".jpg":
return true;
break;
case ".png":
return true;
break;
case ".bmp":
return true;
break;
default:
return false;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
请建议我如何在这里使用try catch块.
提前致谢.
一个更好的可以像这样,
public bool CheckFileType(string FileName)
{
bool result = false ;
try
{
string Ext = Path.GetExtension(FileName);
switch (Ext.ToLower())
{
case ".gif":
case ".JPEG":
case ".jpg":
case ".png":
case ".bmp":
result = true;
break;
}
}catch(Exception e)
{
// Log exception
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
您可以通过多种方法在返回值的方法中使用异常:
将您的return语句放在try-catch之外 例如:
T returnValue = default(T);
try
{
// My code
}
catch
{
// Exception handling code
}
return returnValue;
Run Code Online (Sandbox Code Playgroud)
在您的渔获中放一个退货声明
try
{
// My code
}
catch
{
// Handle exception
return default(T);
}
Run Code Online (Sandbox Code Playgroud)
引发异常
你不具备返回一个值,该方法只需简单地结束(如达到return语句或throw语句)。根据异常,返回值并不总是有效的。
您应该仔细考虑何时以及如何捕获和处理异常:
在您的情况下:
string Ext = Path.GetExtension(FileName);,根据文档,如果FileName包含,则该语句可能会失败。(请注意GetExtension,即使FileName为null 也不会返回null)。所以我可能会处理这样的异常:
public bool CheckFileType(string FileName)
{
string Ext;
try
{
Ext = Path.GetExtension(FileName);
}
catch (ArgumentException ex)
{
return false;
}
// Switch statement
}
Run Code Online (Sandbox Code Playgroud)
请注意,我们只捕获了我们期望的异常(ArgumentException),并且仅将try语句放在希望从中引发异常的语句周围。
实际上,最好避免在可能的情况下引发和捕获异常-不仅会导致性能下降(如果在循环内调用此方法,可能会导致严重问题),而且您可能会无意中捕获并处理异常没想到,掩盖了更严重的问题。
在这种情况下,我们可以通过检查自己是否FileName包含任何无效字符来避免完全引发异常:
public bool CheckFileType(string FileName)
{
if (FileName == null)
{
return false;
}
if (FileName.IndexOfAny(System.IO.Path.GetInvalidPathChars()) >= 0)
{
return false;
}
// Your original method goes here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15915 次 |
| 最近记录: |