Шалгасан онцгой тохиолдол ба Ажиллах үеийн онцгой тохиолдол
Үйлс үл хамаарах зүйл нь хөтөлбөрийн хэвийн урсгалд саад учруулж болзошгүй онцгой төрлийн үйл явдал юм. Нэрийн үл хамаарах зүйл нь "онцгой үйл явдал" -аас гаралтай. Үл хамаарах зүйл хаях нь онцгой объект үүсгэж, түүнийг ажиллуулах цагийн системд шилжүүлэх үйл явц юм. Ажиллах үеийн систем нь үл хамаарах объектыг хүлээн авах үед энэ нь урвуу дарааллаар (аргууд дуудагдсан) урвуу дарааллаар дамжих замаар дуудлагын стек дотор үүнийг зохицуулах хэн нэгнийг олохыг оролдох болно. Ажиллах цагийн систем нь онцгой тохиолдлын зохицуулагчтай аргыг олсон тохиолдолд амжилттай болно. Онцгой байдлын зохицуулагч нь дээрх онцгой тохиолдлыг албан ёсоор зохицуулах кодын блок юм. Хэрэв ажиллах үеийн систем тохирох зохицуулагчийг олвол энэ нь онцгой объектыг зохицуулагч руу дамжуулна. Үүнийг үл хамаарах зүйлийг барих гэж нэрлэдэг. Гэсэн хэдий ч хэрэв онцгой тохиолдлыг шийдвэрлэх боломжгүй бол програм зогсох болно. Java хэл дээр үл хамаарах зүйлүүд Throwable ангиас өвлөгддөг. Шалгасан Үл хамаарах зүйлүүд нь хөрвүүлэгчийн хяналтыг хэрэгжүүлдэг үл хамаарах зүйлүүд юм. Ажиллах үеийн үл хамаарах зүйлүүд нь хөрвүүлэгчээр шалгагдаагүй үл хамаарах зүйлүүд юм.
Шалгасан онцгой тохиолдол гэж юу вэ?
Чалгасан Үл хамаарах зүйлүүд нь java.lang.exception ангийн объект эсвэл түүний дэд ангиуд юм (java.lang. RuntimeException болон түүний дэд ангиудаас бусад). Шалгасан үл хамаарах зүйлүүд эмхэтгэх үед "шалгагддаг". Энэ нь программист эдгээр үл хамаарах зүйлсийг барьж авах эсвэл хаях ёстой, эс тэгвээс эмхэтгэл гомдоллох болно (хөрвүүлэгчийн алдаа үүсгэдэг). Энэ шалтгааны улмаас олон шалгагдсан үл хамаарах зүйлүүд программистуудад маш сайн мэддэг. Жишээлбэл, IOException болон түүний дэд ангиуд нь үл хамаарах зүйлсийг шалгадаг бөгөөд програмист файлд хандах эсвэл өөрчлөх үед хөрвүүлэгч бүх боломжит IOExceptions-ийг програмист хариуцаж байгаа эсэхийг шалгадаг.
Ажиллах үеийн онцгой тохиолдол гэж юу вэ?
Runtime Exception нь java.lang. RuntimeException болон түүний бүх дэд ангиас бүрдэнэ. Онолын хувьд тэдгээр нь шалгагдсан үл хамаарах зүйлүүдтэй ижил зорилгод үйлчилдэг бөгөөд шалгагдсан онцгой тохиолдол шиг шидэж эсвэл зохицуулагдаж болох боловч хөрвүүлэгч тэдгээртэй харьцдаггүй. Иймээс Runtime-ын онцгой тохиолдлууд нь шалгагдаагүй онцгой байдлын гэр бүлд хамаарна. NullPointerException, NumberFormatEception, ClassCastException болон ArrayIndexOutOfBoundsException нь Java-н нийтлэг ажиллах үеийн үл хамаарах зүйлүүд юм.
Шалгасан онцгой тохиолдол болон Ажиллах цагийн онцгой байдлын ялгаа нь юу вэ?
Хэдийгээр шалгасан үл хамаарах зүйлүүд болон ажиллах үеийн үл хамаарах зүйлүүд нь программыг гүйцэтгэх явцад хүсээгүй тохиолдлууд боловч тэдгээр нь өөр өөр байдаг. Шалгасан онцгой байдлын зохицуулалтыг хөрвүүлэгч хэрэгжүүлдэг боловч ажиллах үеийн онцгой тохиолдлууд биш юм. Тиймээс кодыг эмхэтгэхийн тулд шалгасан үл хамаарах зүйлсийг хаях эсвэл зохицуулах шаардлагатай боловч ажиллах үеийн онцгой тохиолдлуудад ийм шаардлага байхгүй. Иймээс ажиллах үеийн үл хамаарах зүйлүүд нь алдааны хамт шалгагдаагүй онцгой байдлын ангилалд хамаарна.
Шалгасан үл хамаарах зүйлүүдийн сул тал бол програмист хэрхэн яаж хийхээ мэдэхгүй байсан ч үүнийг зохицуулах ёстой байдаг. Тиймээс, хэрэв программист эхийг нь боохгүйгээр зүгээр л шинэ үл хамаарах зүйл шидвэл анхны үл хамаарах зүйлд хамаарах стекийн мөр алга болно. Энд ажиллах үеийн үл хамаарах зүйлүүд хэрэгтэй болно. Ажиллах үеийн бүх онцгой тохиолдлуудыг нэг дор зохицуулах боломжтой тул програмистууд бага хэмжээний код бичих боломжтой. Нөгөөтэйгүүр, шалгасан үл хамаарах зүйлүүд нь баригдах ёстой тул программист гайхах зүйл байхгүй. Тэр ямар ч шалгасан үл хамаарах зүйлийг тодорхой аргаар хаяж болохыг үргэлж мэдэх болно. Үүний эсрэгээр, янз бүрийн ажиллах үеийн онцгой тохиолдлуудыг програмистын мэдэлгүйгээр хаяж болно.