2
上發生了'System.NullReferenceException'類型的異常對不起,我是ASP.NET和英語的新手。我有這個捕麻煩,如果在登錄驗證密碼或用戶不正確,下面的錯誤發生時Try {} Catch(exception){throw}
型「System.NullReferenceException」發生在ProjetoPizzaria.dll的一個例外,但在用戶代碼中沒有處理
其他信息:參考對象:
翻譯:對象引用未設置爲對象的實例。
有人可以解釋我是什麼嗎?
public String ValidaLogin(String Login, String Senha)
{
String Retorno = "";
try
{
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=pizzariaDemo");
conn.Open();
Retorno = Retorno + " + Conexao Aberta1";
string sql = "Select [FUNC_SENHA] from [dbo].[TCAD_FUNC]" +
" where [FUNC_LOGIN] = @usuario";
string sql2 = "Select [FUNC_ID] from [dbo].[TCAD_FUNC]" +
" where [FUNC_LOGIN] = @usuario";
Retorno = " + Criando Comando 1";
SqlCommand cmd = new SqlCommand(sql, conn);
Retorno = " + Adicionando Parametros ao Comando 1";
cmd.Parameters.Add(new SqlParameter("@usuario", Login));
//executa o comando com os parametros que foram adicionados acima
Retorno = " + Executando Primeira Query";
string senhaNoBanco = cmd.ExecuteScalar() as string; //Executa a consulta, e retorna a primeira coluna da primeira linha no conjunto de resultados retornados pela consulta. As colunas ou linhas adicionais são ignoradas.
cmd.ExecuteNonQuery();
Retorno = " + Executado Primeira Query";
//fecha a conexao
conn.Close();
Retorno = " + Conexao Fechada1";
//Retorna a chave primaria do Usuário Selecionado
SqlCommand comando2 = new SqlCommand(sql2, conn);
comando2.Parameters.Add(new SqlParameter("@usuario", Login));
conn.Open();
Retorno = " + Conexao Aberta2";
string id_funcionario = comando2.ExecuteScalar().ToString(); //Executa a consulta, e retorna a primeira coluna da primeira linha no conjunto de resultados retornados pela consulta. As colunas ou linhas adicionais são ignoradas.
//comando2.ExecuteNonQuery();
Retorno = " + Conexao Executda Segunda Query";
conn.Close();
Retorno = " + Conexao Fechada2";
//Valida a conexão
if (string.IsNullOrEmpty(senhaNoBanco))
{
//Quando ocorre algum erro como por exemplo Login invalido
Retorno += "Login invalido";
}
else
{
if (senhaNoBanco == Senha)
{
//Conexão realizada com sucesso!
Retorno = "[Conexao Realizada]";//[" + id_funcionario + "]";
}
else
{
//erro com a senha digitada
Retorno = "Senha Invalida";
}
}
}
catch (Exception)
{
throw;
}
finally
{
}
return Retorno;
}
除了拋出原始異常外,你沒有在你的'catch'子句中做任何事情。 try-catch旨在預測可能的異常,然後優雅地處理它。你預計空引用?發生時你想要發生什麼? – 2014-11-22 23:52:57
我只是想在課程結束時返回false。 – 2014-11-23 00:01:54
而完全忽略空引用?然後不要在catch子句中再次拋出異常。你會被建議趕上'NullReferenceException'而不是'Exception' – 2014-11-23 00:04:36