Я использовал операторы try и catch как простой способ сохранить мой код работающим без сбоев (я бы обернул все в большой попытке). Относительно недавно, Я хотел начать более правильно использовать операторы try and catch. В качестве примера у меня есть вопросы по:
public class Ninja{
Ninja(){
}
public void ThrowShirikin(int numberOfShirikins){
try{
if(numberOfShirikins == 0){
throw new System.ArgumentException("Invalid number of shirikins");
}
//Throw shirikin
}
catch(ArgumentException e){
MessageBox.Show(e.Message);
}
}
}
В приведенном выше классе Ninja все содержимое моего метода ThrowShirikin содержится в цикле try. Поскольку существует только одна возможность для ошибки ввода (в данном случае, когда numberOfShirikins == 0), не должны ли в цикле try содержаться только строки кода, которые проверяют это? См. Ниже:
public class Ninja{
Ninja(){
}
public void ThrowShirikin(int numberOfShirikins){
bool errorsExist = false;
try{
if(numberOfShirikins == 0){
errorsExist = true;
throw new System.ArgumentException("Invalid number of shirikins");
}
}
catch(ArgumentException e){
MessageBox.Show(e.Message);
}
if(!errorsExist){
//Throw shirikin
}
}
}
^ Но то, что у меня здесь, кажется немного неуклюжим. Любые предложения и отзывы о том, как я понимаю использование операторов try catch? Спасибо!
Изменить:
Или я мог бы сделать что-то подобное, чтобы код // Throw shirikin никогда не выполнялся, если есть недопустимое значение для numberOfShirikins?:
public class Ninja{
Ninja(){
}
public void ThrowShirikin(int numberOfShirikins){
try{
if(numberOfShirikins == 0){
throw new System.ArgumentException("Invalid number of shirikins");
return;
}
}
catch(ArgumentException e){
MessageBox.Show(e.Message);
}
//Throw shirikin
}
}