Как отловить исключение System.NullReferenceException? - PullRequest
0 голосов
/ 12 апреля 2020

Когда переменная сеанса достигает тайм-аута, выдается NullReferenceException. Я знаю, что вы можете изменить время ожидания переменной сеанса. Я пытаюсь удалить все возможные способы, чтобы что-нибудь взломать sh. Есть ли какая-то причина, по которой исключение здесь не ловится?

protected void Page_Load(object sender, EventArgs e)
{
     try
     {
        // Get session variables. 
        String strParticipantID = Session["ParticipantID"].ToString();
     }
     catch (NullReferenceException)
     {
            Response.Redirect("Login.aspx");
     }    
}

1 Ответ

2 голосов
/ 12 апреля 2020

Вы никогда не должны пытаться поймать NullReferenceException, и при этом вы не должны бросать его вручную.
Что вы должны сделать, это написать нулевой безопасный код - и это довольно легко с помощью условного оператора null (* 1004) *) -

// This will never throw a null reference exception
var participantID = Session["ParticipantID"]?.ToString(); 

Если вам нужна пустая строка вместо null, вы можете объединить ее с оператором null coalescing (??) :

// This will never throw a null reference exception - 
// participantID will be an empty string if Session["ParticipantID"] is null.
var participantID = Session["ParticipantID"]?.ToString() ?? ""; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...