Могу ли я создать метод для исключений? - PullRequest
1 голос
/ 17 марта 2020

Я хочу использовать исключение в качестве триггера для метода . Как я могу это сделать?

Например, когда возникает это исключение:

actuator1.Members["ZamanSetreset"].Active = true; // <- NullReferenceException here
actuator1.Members["ZamanSetreset"].Connect();

enter image description here

Я могу столкнуться с этим исключение слишком много. Так как я могу сделать это без try..catch?

Ответы [ 3 ]

3 голосов
/ 17 марта 2020

Поймать NullReferenceException по меньшей мере вводит в заблуждение и не более опасно идея. Давайте извлечем (локальный) метод

    bool Perform(string name) {
      var actuator = actuator1.Members[name];

      if (actuator != null) {
        actuator.Active = true;

        actuator.Connect(); 

        return true;
      }

      //TODO: if you want some kind of trigger, put it here

      return false;
    }

Затем используем его

    Perform("ZamanSetreset");

Вы можете объединить эти вызовы:

    if (Perform("ZamanSetreset") &&
        Perform("Action2") &&
        Perform("Action3")) {
       // If all actions complete
    }
    else {
       // At least one action is not performed
    } 
1 голос
/ 17 марта 2020

Как и предполагалось, для этого вам нужен блок try catch. Вы можете прочитать об этом здесь

В вашем примере:

try
{
 actuator1.Members["ZamanSetreset"].Active = true;
}
catch(NullReferenceException ex)
{
  //run your method here
}
1 голос
/ 17 марта 2020

Вы можете использовать блок try catch

try{
 actuator1.Members["ZamanSetreset"].Active = true;
}catch(NullReferenceException ex){
  //handle error here
}

РЕДАКТИРОВАТЬ:

или вы можете сделать нулевую проверку перед раздачей:

if(actuator1 != null && Array.IndexOf(actuator1.Members, "ZamanSetreset") > -1){
actuator1.Members["ZamanSetreset"].Active = true;
}else{
  //handle null values
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...