Белгиленген бөтөнчөлүк жана аткаруу убактысынын өзгөчө учуру
Өзгөчө көрүнүштөр программанын кадимки агымын бузушу мүмкүн болгон окуялардын өзгөчө түрү. Аты-жөнү "өзгөчө окуядан" келип чыккан. Өзгөчөлүктү ыргытуу - бул өзгөчө объектти түзүү жана аны иштөө убактысынын тутумуна өткөрүп берүү процесси. Иштөө мезгили системасы өзгөчө объектти кабыл алганда, аны тескери тартипте (ыкмалар чакырылган) айланып өтүү менен чалуу стекинин ичинде аны иштетүү үчүн бирөөнү табууга аракет кылат. Иштөө убактысы системасы, эгерде ал өзгөчө иштетүүчү менен ыкманы тапса, ийгиликтүү болот. Exception handler - бул аталган өзгөчөлүктү расмий түрдө чече ала турган код блогу. Эгерде иштөө убактысы системасы ылайыктуу иштеткичти тапса, ал өзгөчө объектти иштеткичке өткөрүп берет. Бул өзгөчө кармоо деп аталат. Бирок, өзгөчө кырдаалды чечүү мүмкүн болбосо, программа токтотулат. Javaда өзгөчөлүктөр Throwable классынан мураска алынат. Текшерилген бөтөнчөлүктөр компилятор тарабынан иштетилген өзгөчөлүктөр. Иштөө убактысынын өзгөчө учурлары компилятор тарабынан текшерилбеген өзгөчөлүктөрдүн бир түрү.
Текшерилген өзгөчөлүк деген эмне?
Checked Exceptions же java.lang.exception классынын объекттери же анын субкласстары (java.lang. RuntimeException жана анын подкласстарынан башка). Текшерилген өзгөчөлүктөр компиляция убагында "текшерилет". Бул программист бул өзгөчөлүктөрдү кармашы же ыргытышы керек, антпесе компиляция нааразы болот (компилятор катасын жаратат). Ушул себептен улам, көптөгөн текшерилген өзгөчөлүктөр программисттерге жакшы белгилүү. Мисалы, IOException жана анын суб класстары өзгөчө учурлар текшерилет жана программалоочу файлга жетүү же өзгөртүү менен алектенген сайын, компилятор бардык мүмкүн болгон IOExceptions программист тарабынан кам көрүлүп жатканын текшерет.
Иштөө убактысынын өзгөчөлүгү деген эмне?
Runtime Exceptions java.lang. RuntimeException жана анын бардык суб класстарынан турат. Теориялык жактан алганда, алар текшерилген бөтөнчөлүктөр сыяктуу эле максатка кызмат кылат жана текшерилген өзгөчө жагдайлар сыяктуу ыргытылат же иштетилет, бирок аларды иштетүү компилятор тарабынан аткарылбайт. Ошондуктан, Runtime өзгөчөлүктөр текшерилбеген өзгөчөлүктөрдүн үй-бүлөсүнө таандык. NullPointerException, NumberFormatEception, ClassCastException жана ArrayIndexOutOfBoundsException Java'дагы жалпы иштөө убактысынын өзгөчө учурлары.
Текшерилген бөтөнчөлүк менен Runtime Exception ортосунда кандай айырма бар?
Текшерилген бөтөнчөлүктөр да, аткаруу убактысынын өзгөчө учурлары да программаны аткаруу учурунда каалабаган көрүнүш болсо да, алардын айырмачылыктары бар. Текшерилген өзгөчө кырдаалды иштетүү компилятор тарабынан аткарылат, бирок иштөө убактысынын өзгөчөлүгү андай эмес. Ошондуктан, кодду компиляциялоо үчүн текшерилген өзгөчөлүктөр ыргытылуу же иштетилиши керек, бирок иштөө убактысынын өзгөчөлүгүнө карата мындай талап жок. Демек, аткаруу убактысынын өзгөчө учурлары каталар менен бирге текшерилбеген өзгөчөлүктөр категориясына кирет.
Текшерилген өзгөчөлүктөр менен кемчилик - бул программист аны кантип жасоону билбесе да чечиши керек. Ошентип, эгерде программист оригиналды оробой эле жаңы өзгөчөлүктү ыргытса, баштапкы өзгөчөлүккө тиешелүү стек изи жоголот. Бул жерде иштөө убактысынын өзгөчөлүгү жардамга келет. Бардык иштөө убактысынын өзгөчөлүктөрүн бир жерде иштетүүгө болот, ошондуктан программисттер азыраак код жаза алышат. Башка жагынан алганда, текшерилген өзгөчөлүктөр кармалышы керек болгондуктан, программист үчүн күтүлбөгөн нерсе жок. Ал ар дайым кайсы текшерилген өзгөчөлүктү белгилүү бир ыкма менен таштаса болорун билет. Буга карама-каршы, ар кандай иштөө убактысынын өзгөчөлүктөрүн программист билбестен таштаса болот.