Онцгой байдал ба алдааны ялгаа

Онцгой байдал ба алдааны ялгаа
Онцгой байдал ба алдааны ялгаа

Видео: Онцгой байдал ба алдааны ялгаа

Видео: Онцгой байдал ба алдааны ялгаа
Видео: Стивен Хокинг ба ХАР НҮХ 2024, Долдугаар сарын
Anonim

Онцгой байдал ба алдаа

Хөтөлбөр ажиллаж байх үед гэнэтийн үйлдэл гарах нь гарцаагүй. Энэ нь үл хамаарах зүйл эсвэл алдаатай холбоотой байж болно. Үл хамаарах зүйл бол хөтөлбөрийн хэвийн урсгалд саад учруулж болзошгүй үйл явдал юм. Алдаа бол нөхөж баршгүй гэж үзэж болох нөхцөл юм. Үл хамаарах зүйлүүд нь ихэвчлэн програмтай холбоотой байдаг бол алдаа нь програм ажиллаж байгаа системтэй холбоотой байдаг.

Үл хамаарах зүйл юу вэ?

Онцгой тохиолдол нь хөтөлбөрийн хэвийн урсгалд саад учруулж болзошгүй үйл явдал юм. Нэрийн үл хамаарах зүйл нь "онцгой үйл явдал" -аас гаралтай. Үл хамаарах зүйл хаях нь онцгой объект үүсгэж, түүнийг ажиллуулах цагийн системд шилжүүлэх үйл явц юм. Онцгой байдлын объектыг үл хамаарах зүйл тохиолдсон аргаар үүсгэнэ. Exception объект нь үл хамаарах зүйлийн төрөл, тайлбар зэрэг хэрэгтэй мэдээллийг агуулдаг. Ажиллах үеийн систем нь үл хамаарах объектыг хүлээн авах үед энэ нь урвуу дарааллаар (аргууд дуудагдсан) урвуу дарааллаар дамжих замаар дуудлагын стек дотор үүнийг зохицуулах хэн нэгнийг олохыг оролдох болно. Дуудлагын стек нь онцгой тохиолдол гарсан аргын өмнө дуудагдсан аргуудын дараалсан жагсаалт юм. Ажиллах цагийн систем нь онцгой тохиолдлын зохицуулагчтай аргыг олсон тохиолдолд амжилттай болно. Онцгой байдлын зохицуулагч нь дээрх онцгой тохиолдлыг албан ёсоор зохицуулах кодын блок юм. Хэрэв ажиллах үеийн систем тохирох зохицуулагчийг олвол (жишээлбэл, онцгой байдлын төрөл нь зохицуулж болох төрөлтэй тохирч байвал) энэ нь онцгой байдлын объектыг зохицуулагч руу дамжуулна. Үүнийг үл хамаарах зүйлийг барих гэж нэрлэдэг. Гэсэн хэдий ч хэрэв онцгой тохиолдлыг шийдвэрлэх боломжгүй бол програм зогсох болно. Java хэл дээр үл хамаарах зүйлүүд нь ‘Throwable анги’-аас өвлөгддөг. NullPointerException болон ArrayIndexOutOfBoundsException нь Java-д нийтлэг хоёр үл хамаарах зүйл юм.

Алдаа гэж юу вэ?

Алдаа гэдэг нь сэргээх боломжгүй нөхцөл байдал, тухайлбал програмын санах ойн хэмжээ байгаа хэмжээнээс их байх шаардлагатай. Эдгээр алдааг ажиллах үед шийдвэрлэх боломжгүй. Хэрэв алдаа гарвал програм зогсох болно. Java хэл дээр алдаа нь Throwable ангиас удамшдаг. Алдаа нь ихэвчлэн програмист (эсвэл програм) барьж авах гэж оролдох ёсгүй ноцтой асуудлуудыг илэрхийлдэг. Алдаа бол ердийн нөхцөлд хэзээ ч гарахгүй, тиймээс урьдчилан таамаглах боломжгүй хэвийн бус нөхцөл байдал юм. Жишээлбэл, OutOfMemoryError, StackOverflowError, ThreadDead нь ийм алдаа юм. Аргад хэзээ ч алдаа гаргагч байх ёсгүй.

Exception болон алдаа хоёрын ялгаа нь юу вэ?

Алдаа болон үл хамаарах зүйлүүд нь програмыг ажиллуулах явцад хүсээгүй тохиолдлууд юм. Гэсэн хэдий ч тэдгээр нь гол ялгаанууд байдаг. Үл хамаарах зүйлийг програмист урьдчилан харж болох боловч алдааг урьдчилан таамаглахад хэцүү байдаг. Үл хамаарах зүйлийг шалгаж эсвэл болиулж болно. Гэхдээ алдааг үргэлж шалгадаггүй. Үл хамаарах зүйл нь ихэвчлэн програмистаас үүссэн алдааг илэрхийлдэг. Гэсэн хэдий ч системийн алдаа эсвэл нөөцийн зохисгүй ашиглалтаас болж алдаа гардаг. Тиймээс, үл хамаарах зүйлийг програмын түвшинд, алдааг системийн түвшинд (зөвхөн боломжтой бол) анхаарч үзэх хэрэгтэй. Онцгой тохиолдлыг шийдвэрлэсний дараа та ердийн програмын урсгал руу буцах баталгаатай болно. Гэхдээ алдаа гарсан ч програмист хүн үүнийг хэрхэн зохицуулахаа мэдэхгүй байж магадгүй юм. Уламжлалт алдаатай харьцахаас ялгаатай нь үл хамаарах зүйл нь алдаа засах кодыг ердийн кодоос салгах боломжийг олгодог.

Зөвлөмж болгож буй: