如何在不使用try / catch的情况下处理NullReferenceExceptions

时间:2018-07-03 09:34:30

标签: c# exception

我有这样的代码:

string fileLocation = Request.Form["FileName"].ToString(); 

if (!string.IsNullOrEmpty(fileLocation))
{                          
    var deleteFile = fileLocation.Split('\\')[1];
    var pathe = Path.Combine(uploadPath, deleteFile;
    if (System.IO.File.Exists(pathFile))
    {
        System.IO.File.Delete(pathFile);
    }
}

通常,如果我没有选择文件,Request.Form["FileName"].ToString()将返回SystemNullException,我打算将其设置为null。

我是否可以不使用try catch来做到这一点?

2 个答案:

答案 0 :(得分:3)

如果Request.Form["FileName"]返回null,那么您将无法执行.ToString()

因此您可以使用null传播器来解决此问题:

Request.Form["FileName"]?.ToString()

答案 1 :(得分:1)

仅在应用.ToString之前进行检查。

var result = Request.Form["FileName"];
if(result != null)
{
    string fileLocation = result.ToString();
    if (!string.IsNullOrEmpty(fileLocation))
    {
        var deleteFile = fileLocation.Split('\\')[1];
        var pathe = Path.Combine(uploadPath, deleteFile;
        if (System.IO.File.Exists(pathFile))
        {
            System.IO.File.Delete(pathFile);
        }
    }
}