Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев_С++_CLI_C#_Java_J#.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

10.10.3, В котором вызываются две функции.

Пример 10.10.3. Вложение исключений.

////////////////////

// Java или J#

package cjLecExc_3a;

public class Exc

{

public static void main ( )

<

try

{

First ( );

>

catch (ArithmeticException e)

{System.out.println (e+" First");>

>

static void First ( )

{

Second ();

>

static void Second ( )

{

int x, y, z;

try

{

x= 5; y= 0; z= x/y;

System.out.println ("z= "+z);

catch(ArithmeticException e)

{System.out.println (e+" Second");>

>

/>*

Result:

java.lang.ArithmeticException: / by zero Second

Press any key to continue

*/

Программа примера 10.10.3 при выбросе исключения перехватила ближай-

ший catch-блок функции Second(). Но если закомментировать try-catch-

конструкцию в функции Second(), то сработает try-catch-конструкция, разме-

щенная в функции First().

Результаты работы этой программы показывают, что при наличии соответ-

ствующего блока catch исключение не завершает аварийно всю программу, а

завершает аварийно только функцию, в которой оно выброшено.

Пример 10.10,4 иллюстрирует необходимость применения исключения

для выявления правильности вводимых данных в текстовый редактор. Про-

грамма проверяет, какое число было введено в редактор: положительное или

отрицательное. После ввода числа и нажатия на кнопку в редакторе появля-

ется слово positive или negative. Если введено не число, то в редакторе добав-

ляется строка Error! Enter the correct number.

Пример 10.10.4. Обработчик киопки использует исключение.

////////////////////

// Java и J#

Importjava.Awt.*;

Importjava.Awt.Event.*;

public class CTextBox extends Frame // Класс прикладного окна

{

TextField tB; // Редактор

Button b; // Кнопка

public CTextBox() // Конструктор

{

setTitle ("TestNumber"); // Установить заголовок прикладного окна

setSlze (300, 200);

thls.setBackground (Color.lightGray);

setLayout (null);

tB= new TextField (); // Создать редактор

tB.setLocatlon (10, 30); // Разместить редактор

tB.setSlze (250, 20); // Установить размер

tB.setText ("Enter the number"); // Установить текст в редакторе

add (tB); // Добавить редактор в фрейм

b= new Button ("OK"); Ц Создать кнопку

b.setLocatlon (10, 50); // Разместить кнопку

b.setSize (40, 30); // Установить размер кнопки

add (b); // Добавить кнопку к фрейму

// Подписать слушателя на событие кнопки

b.addActionLlstener (new ActionListener ( )

<

public void actionPerformed (ActionEvent aE)

{

try

{

int n=Integer.parseInt (tB.getText());

lf(n<0) tB.setText ("negative");

else tB.setText ("pos!tive"); >

catch (NumberFormatExceptlon e)

{

tB.setText (tB.getText () +

" Error! Enter the correct number");

>

>

});

this.addWindowListener (new WindowAdapter ()

{

public void windowClosing (WindowEvent wE)

{

System.exlt (0);

>

»;

>

public static void main ( ) // Главная функция

<

CTextBox cT= new CTextBox ( );

cT.show ( );

>

>

////////////////////

C#

using System;

using System.Drawing;

using System.Windows.Forms;

class CTextBox : Form // Класс прикладного окна

{

TextBox tB; // Редактор

Button b; // Кнопка

public CTextBox() // Конструктор

{

Text="TestNumber"; // Установить заголовок прикладного окна

tB= new TextBox (); // Создать редактор

tB.Location= new Point (10, 30);// Разместить

tB.Size= new Size (250, 20); // Установить размер

tB.Text= "Enter the number"; // Установить текст в редакторе

this.Controls.Add (tB);

b= new Button ();

b.Text= "OK";

b.Location= new Point (10, 50);

b.Size= new Size (40, 30);

Controls.Add (b);

b.Click += new EventHandler (E

// Добавить редактор в форму

// Создать кнопку

// Установить название кнопки

// Разместить кнопку

// Установить размер кнопки

// Добавить кнопку в форму