Similar presentations:
Ерекше жағдайларды өңдеуге кіріспе
1.
ЕРЕКШЕ ЖАҒДАЙЛАРДЫӨҢДЕУГЕ КІРІСПЕ
29.01.2024ж.
2.
ЖОСПАРЕрекше жағдайларды өңдеуге кіріспе
Бірнеше ерекшеліктерді өңдеу
Throws операторы
3.
3ЕРЕКШЕ ЖАҒДАЙЛАРДЫ ӨҢДЕУГЕ
КІРІСПЕ
Қателер көбінесе әзірлеушінің кінәсінен емес, бағдарламаны орындау кезінде
туындауы мүмкін. Олардың кейбіреулерін болжау немесе болжау қиын, кейде тіпті
мүмкін емес. Мысалы, файлды тасымалдау кезінде желі қосылымы күтпеген жерден
төмендеуі мүмкін. Мұндай жағдайлар ерекше жағдайлар деп аталады.
Java тілі мұндай жағдайларды шешуге арналған арнайы құралдарды ұсынады.
Осындай құралдардың бірі - try...catch...finally конструкциясы. Егер try блогында
ерекшелік болса, басқару осы ерекшелікті өңдей алатын catch блогына өтеді. Егер
мұндай блок табылмаса, пайдаланушыға өңделмеген ерекшелік туралы хабарлама
көрсетіледі және бағдарламаның одан әрі орындалуы тоқтатылады. Ал мұндай
тоқтаудың алдын алу үшін try..catch блогын қолдану керек. Мысалы:
int[] numbers = new int[3];
numbers[4]=45;
System.out.println(numbers[4]);
Біздің numbers массивінде тек 3 элемент болуы мүмкін болғандықтан, numbers[4]=45
нұсқаулығын орындау кезінде консоль ерекше жағдайды көрсетеді және бағдарлама
жұмысын тоқтатады.
4.
4Енді осы ерекшелікті өңдеуге тырысайық:
try{
int[] numbers = new int[3];
numbers[4]=45;
System.out.println(numbers[4]);}
catch(Exception ex){
ex.printStackTrace();}
try...catch блогын пайдаланған кезде try және catch операторларының арасындағы
барлық операторлар алдымен орындалады. Тапсырма блогында кенеттен ерекше
жағдай орын алса, қалыпты орындау тәртібі тоқтап, catch операторына өтеді.
Сондықтан бағдарламаның орындалуы жол numbers[4]=45; жеткенде, бағдарлама
тоқтап, catch блогына өтеді.
Ұстау өрнегі келесі синтаксиске ие: catch (ерекшелік_түрінің айнымалы_аты). Бұл
жағдайда Exception түріндегі ex айнымалысы жарияланады. Бірақ егер орын
алатын ерекшелік catch операторында көрсетілген түрдегі ерекшелік болмаса,
онда ол өңделмейді және бағдарлама жай ғана қатып қалады немесе қате туралы
хабарды жібереді.
5.
5Бірақ Exception түрі барлық ерекшеліктер үшін негізгі сынып болғандықтан, catch өрнегі
(Exception ex) барлық дерлік ерекшеліктерді өңдейді. Бұл жағдайда ерекше жағдайды
өңдеу Exception сыныбында анықталған printStackTrace() әдісін пайдаланып консольге қате
стек ізін басып шығаруға байланысты.
catch блогы орындауды аяқтағаннан кейін бағдарлама catch блогынан кейінгі барлық басқа
операторларды орындай отырып, жұмысын жалғастырады.
try..catch құрылымында finally блогы да болуы мүмкін. Дегенмен, бұл блок қосымша
болып табылады және ерекше жағдайларды өңдеу кезінде өткізіп жіберуге болады. Finally
блогы try блогында ерекше жағдай орын алғанына қарамастан орындалады:
try{
int[] numbers = new int[3];
numbers[4]=45;
System.out.println(numbers[4]);}
catch(Exception ex){
ex.printStackTrace();}
finally{
System.out.println("Блок finally");}
System.out.println("Программа завершена");
6.
Заголовок презентацииБІРНЕШЕ ЕРЕКШЕЛІКТЕРДІ
ӨҢДЕУ
Java тілінде ерекше жағдайлардың көптеген түрлері бар
және біз оларды өңдеуді қосымша catch блоктарын қосу
арқылы ажырата аламыз:
int[] numbers = new int[3];
try{
numbers[6]=45;
numbers[6]=Integer.parseInt("gfd");}
catch(ArrayIndexOutOfBoundsException ex){
System.out.println("Выход за пределы массива");}
catch(NumberFormatException ex){
System.out.println("Ошибка преобразования из строки в
число");}
Егер бізде белгілі бір түрдегі ерекшелік болса, онда ол
сәйкес catch блогына өтеді.
6
7.
THROWS ОПЕРАТОРЫКейде ерекшелік жасалуы мүмкін әдіс бұл ерекшелікті өзі
өңдемейді. Бұл жағдайда әдіс декларациясында throws
операторы қолданылады, оны осы әдісті шақырған кезде
өңдеу керек. Мысалы, бізде факториалды есептеу әдісі бар,
егер әдіске 1-ден аз Сан берілсе, жағдайды өңдеу керек:
public static int getFactorial(int num) throws Exception{
if(num<1) throw new Exception("The number is less than 1");
int result=1;
for(int i=1; i<=num;i++){
result*=i;
}
return result;}
Throw операторы шартқа негізделген ерекше жағдайды
шығарады. Сонымен бірге әдістің өзі try..catch көмегімен бұл
ерекшелікті өңдемейді, сондықтан throws Exception өрнегі
әдіс анықтамасында пайдаланылады.
8.
Енді осы әдісті шақырған кезде біз шығарылған ерекше жағдайды өңдеуіміз керек:public static void main(String[] args){
try{
int result = getFactorial(-6);
System.out.println(result); }
catch(Exception ex){
System.out.println(ex.getMessage()); }}
Ерекше жағдайды қарастырмасақ, бізде компиляция қатесі болады және бағдарламаны
құрастыра алмаймыз.
Сонымен қатар, біз throws мәлімдемесін өткізіп жіберіп, оның орнына ерекше жағдайды
тікелей әдіспен өңдей аламыз:
public static int getFactorial(int num){
int result=1;
try{
if(num<1) throw new Exception("The number is less than 1");
for(int i=1; i<=num;i++){
result*=i;
} }
catch(Exception ex){
System.out.println(ex.getMessage());
result=num; }
return result;}
9.
НАЗАРАУДАРҒАНДАРЫҢЫЗҒА
РАХМЕТ!