русс | укр

C# - Головна
Контакти
Задайте питання...
Перегляд всіх питань


Простір імен
  ► System (5)
  ► Microsoft (1)


Для учнів (початківців)
  ► Відео уроки (4)
  ► Навчання (177)
  ► Приклади програм (19)
  ► Секрети Сі Шарп (4)

Для професіоналів
  ► Навчання (6)
  ► Приклади програм (1)










Перевірка кодів повернення функцій і методів C#

Розглянемо випадок, коли ми викликаємо метод обробки інформації, який виконує ділення першого свого параметра на другий.

 

using System;

namespace DivByZero

{

class DivByZrolApp

static int Divide(int x, int y)

{

int result;

result = x / y;

}

static void Main{string[] args)

{

int j;

for (int i = -3; i < =3; i++)

{

j = Divide{10, i); // Помилка ділення на нуль

}

Console.ReadLine();

}

}

}

Для виправлення цієї помилки змінимо метод Divide, щоб він перевіряв значення дільника перед виконанням операції ділення:

static int Divide(int x, int у)

{

int result;

if (y != 0)

result = x / у;

return result;

}

else

return 0;

Тепер помилка ділення на нуль не виникне, так як, якщо дільник дорівнює нулю, поділ не виконується. Однак метод Divide повинен якимось чином просигналізувати викликає методу про виникнення помилки.

Наша реалізація цього методу при помилці повертає нульове значення, однак очевидно, це не найкращий спосіб. У самому справі, нульове значення повертається і в тому випадку, якщо дільник дорівнює нулю, а ця ситуація не є помилковою.

Зауважимо, що повернення особливого значення методом або функцією використовується дуже часто в інших мовах програмування в якості ознаки помилки.

Передбачається, що після звернення до функції операційної системи (такий, наприклад, як відкриття файлу, читання блоку даних з файлу і т. п.) викликає програма перевіряє код повернення, роблячи при виникненні помилки які-небудь дії.

Ось як ми можемо використовувати модифікований варіант методу Divide, повертає нульове значення при виникненні помилки ділення на нуль:

j = Divide(10, i) ;

if (j == 0)

Console.WriteLinef "Помилка ділення на нуль");

У реальних програмах зустрічається досить велика глибина вкладеності функцій і методів, коли один метод викликає інший, той, у свою чергу, звертається до третього і четвертого і т. д.

Рядок лістингу програми, призначені для обробки кодів повернення для всіх цих функцій або методів, захаращують вихідний текст програми, роблячи його «нечитабельним». Крім того, програміст може за забудькуватості опустити перевірку коду повернення якої-небудь однієї функції або методу, що призведе до аварійного завершення програми під час його роботи.

 

Переглядів: 1460






© 2012 ci-sharp.ru При використанні матеріалу пряме iндексуюче посилання на сайт ОБОВ'ЯЗКОВЕ.
Права строго захищені нормами міжнародного права, інтелектуальної власності та авторського права.