1. మినహాయింపులు
>
చివరిగా, ప్రోగ్రామర్లు లోపం నిర్వహణను ప్రామాణీకరించాలని మరియు ఆటోమేట్ చేయాలని భావించారు. మినహాయింపులు కనుగొనబడినప్పుడు ఇది జరిగింది . ఇప్పుడు మినహాయింపు యంత్రాంగం 80% అసాధారణ పరిస్థితులను నిర్వహిస్తుంది.
కొంతమంది విద్వాంసులు మినహాయింపులతో ముందుకు వస్తే, అది అతని లేదా ఆమె డాక్టరల్ పరిశోధన యొక్క అంశం కావచ్చు. ఒక ప్రోగ్రామర్ దానితో ముందుకు వచ్చినట్లయితే, అతను సహోద్యోగి నుండి స్నేహపూర్వకంగా తట్టుకుని ఉండవచ్చు: "ఓకే అనిపిస్తుంది, బ్రో."
ద్వారా విభజన వంటి జావా ప్రోగ్రామ్లో లోపం సంభవించినప్పుడు 0
, కొన్ని అద్భుతమైన విషయాలు జరుగుతాయి:
మొదటి అడుగు
ఒక ప్రత్యేక మినహాయింపు వస్తువు సృష్టించబడింది, ఇది సంభవించిన లోపం గురించి సమాచారాన్ని కలిగి ఉంటుంది.
జావాలోని ప్రతిదీ ఒక వస్తువు, మరియు మినహాయింపులు మినహాయింపులు కాదు 🙂 మినహాయింపు వస్తువులు వాటి స్వంత తరగతులను కలిగి ఉంటాయి మరియు వాటిని సాధారణ తరగతుల నుండి వేరు చేసే ఏకైక విషయం ఏమిటంటే అవి తరగతిని వారసత్వంగా పొందుతాయి Throwable
.
దశ రెండు
మినహాయింపు వస్తువు "విసిరి". బహుశా ఇక్కడ పదాలు మరింత మెరుగ్గా ఉండవచ్చు. "మినహాయింపుని విసరడం" అనేది ఫైర్ అలారాన్ని ట్రిగ్గర్ చేయడం లేదా "DEFCON 1" హెచ్చరికను వినిపించడం లాంటిది.
జావా మెషీన్కు మినహాయింపు విసిరినప్పుడు, ప్రోగ్రామ్ యొక్క సాధారణ ఆపరేషన్ ఆగిపోతుంది మరియు "అత్యవసర ప్రోటోకాల్లు" ప్రారంభమవుతాయి.
దశ మూడు
మినహాయింపు విసిరిన పద్ధతి వెంటనే నిష్క్రమిస్తుంది. మినహాయింపు కాలింగ్ పద్ధతికి పంపబడుతుంది, ఇది కూడా వెంటనే నిష్క్రమిస్తుంది. మరియు పద్ధతి నిష్క్రమించే వరకు గొలుసు డౌన్ main
. పద్ధతి main
ముగిసినప్పుడు, ప్రోగ్రామ్ కూడా ముగుస్తుంది.
ఉదాహరణ:
కోడ్ | కన్సోల్ అవుట్పుట్ |
---|---|
|
|
లైన్ 20లో ఒక మినహాయింపు ఏర్పడుతుంది: 0 ద్వారా విభజన. జావా యంత్రం వెంటనే ఒక మినహాయింపును సృష్టిస్తుంది — ఒక ArithmeticException
వస్తువు మరియు దానిని పద్ధతికి "విసురుస్తుంది".
పద్ధతి divide()
వెంటనే ముగుస్తుంది, కాబట్టి మేము స్ట్రింగ్ను ఎప్పుడూ చూడలేము: భయంకరమైనది ఏమీ జరగలేదు: 0. ప్రోగ్రామ్ పద్ధతికి తిరిగి వస్తుంది endTheWorld()
మరియు పరిస్థితి పునరావృతమవుతుంది: సిస్టమ్లో నిర్వహించలేని మినహాయింపు ఉంది, అంటే పద్ధతి endTheWorld()
కూడా అసాధారణంగా ముగుస్తుంది. అప్పుడు main
పద్ధతి ముగుస్తుంది మరియు ప్రోగ్రామ్ ఆగిపోతుంది.
ఈ మినహాయింపుల ప్రయోజనం ఏమిటి? సరే, మీరు నిర్దిష్ట రకాల మినహాయింపులను పట్టుకోవడానికి మీ స్వంత కోడ్ను వ్రాయవచ్చు మరియు అసాధారణమైన పరిస్థితులను నిర్వహించడానికి మీ స్వంత లాజిక్ను వ్రాయవచ్చు.
2. క్యాచింగ్ మినహాయింపులు:try-catch
జావాలో మినహాయింపు క్యాచింగ్ మెకానిజం ఉంది, ఇది పద్ధతుల యొక్క ఈ అసాధారణ ముగింపును ఆపడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది ఇలా కనిపిస్తుంది:
try
{
// Code where an exception might occur
}
catch(ExceptionType name)
{
// Exception handling code
}
ఈ నిర్మాణాన్ని బ్లాక్ అంటారు try-catch
.
మినహాయింపులు సంభవించే కోడ్ వంకర జంట కలుపులతో చుట్టబడి ఉంటుంది, దీనికి ముందు పదం try
.
కర్లీ బ్రేస్ల తర్వాత, మనకు catch
కీవర్డ్ మరియు, కుండలీకరణాల లోపల, మినహాయింపు వేరియబుల్ డిక్లరేషన్ ఉంటుంది . దీని తర్వాత పేర్కొన్న రకానికి మినహాయింపు ఏర్పడితే అమలు చేయడానికి కోడ్ను చుట్టే కర్లీ బ్రేస్లు ఉంటాయి .
" ప్రైమరీ కోడ్ " అమలు సమయంలో ఎటువంటి మినహాయింపులు ఇవ్వబడకపోతే , క్యాచ్ బ్లాక్లోని కోడ్ అమలు చేయబడదు. మినహాయింపు సంభవించినట్లయితే, అది (విసిరివేయబడిన మినహాయింపు రకం కుండలీకరణాల్లోని వేరియబుల్ రకం వలె ఉంటే).
ఉదాహరణ:
కోడ్ | కన్సోల్ అవుట్పుట్ |
---|---|
|
|
3. బహుళ catch
బ్లాక్లు
సిద్ధాంతంలో, అన్ని రకాల మినహాయింపులను కోడ్ బ్లాక్లో విసిరివేయవచ్చు. కొన్నింటిని మీరు ఒక విధంగా, మరికొందరిని మరొక విధంగా నిర్వహించాలని కోరుకుంటారు మరియు మరికొందరిని మీరు అస్సలు నిర్వహించకూడదని నిర్ణయించుకుంటారు.
catch
జావా డెవలపర్లు మీకు సహాయం చేయాలని నిర్ణయించుకున్నారు మరియు బ్లాక్ తర్వాత ఒకటి కాదు అనేక బ్లాక్లను వ్రాయనివ్వండి try
.
try
{
// Code where an exception might occur
}
catch (ExceptionType1 name1)
{
// Code for handling ExceptionType1
}
catch (ExceptionType2 name2)
{
// Code for handling ExceptionType2
}
catch (ExceptionType3 name3)
{
// Code for handling ExceptionType3
}
ఉదాహరణ:
కోడ్ | కన్సోల్ అవుట్పుట్ |
---|---|
|
|
catch
4. బ్లాక్స్ ఆర్డర్
ఒక బ్లాక్లో సంభవించే మినహాయింపులు try
ఒకే catch
బ్లాక్ ద్వారా మాత్రమే క్యాచ్ చేయబడతాయి. బహుళ బ్లాక్ల నుండి కోడ్ అమలు చేయబడినప్పుడు మీరు మినహాయింపు నిర్వహణ పరిస్థితిని కలిగి ఉండలేరు .catch
కానీ బ్లాక్స్ యొక్క క్రమం ముఖ్యమైనది.
మీరు అనేక బ్లాక్ల ద్వారా మినహాయింపు పొందగలిగే పరిస్థితిని కలిగి ఉండవచ్చు. అదే జరిగితే, ఏ క్యాచ్ బ్లాక్ మొదట వస్తుందో (బ్లాక్కి దగ్గరగా ) మినహాయింపు క్యాచ్ చేయబడుతుంది try
.
బహుళ క్యాచ్ బ్లాక్లు ఒకే మినహాయింపును పొందగల పరిస్థితిని మీరు ఎలా కలిగి ఉంటారు?
అన్ని మినహాయింపులు ఒకే వారసత్వ సోపానక్రమానికి చెందినవి - రేఖాచిత్రాన్ని చూడండి.
ఆబ్జెక్ట్ని ArithmeticException
వేరియబుల్కి కేటాయించవచ్చు, దాని రకం ArithmeticException
లేదా దాని పూర్వీకుల తరగతులలో ఏదైనా: RuntimeException
, Exception
మరియు Throwable
— రేఖాచిత్రం చూడండి.
మేము లెవెల్ 21లో వారసత్వం మరియు పూర్వీకుల తరగతుల గురించి మరింత మాట్లాడతాము.
ఈ కోడ్ బాగా కంపైల్ చేస్తుంది:
వారసత్వం యొక్క ప్రయోజనాలు: |
---|
|
ArithmeticException
కాబట్టి మీరు పైన ఉన్న 4 బ్లాక్లలో దేనితోనైనా పట్టుకోవచ్చు catch
.
ఉదాహరణ 1:
కోడ్ | కన్సోల్ అవుట్పుట్ |
---|---|
|
|
ఈ ఉదాహరణలో, ది మరియు బ్లాక్స్ ArithmeticException
రెండింటి ద్వారా క్యాచ్ చేయవచ్చు . ఇది బ్లాక్కి దగ్గరగా ఉన్న బ్లాక్ ద్వారా క్యాచ్ చేయబడుతుంది — మొదటి బ్లాక్.catch (Exception e)
catch (ArithmeticException e)
try
catch
ఆశ్చర్యాలను నివారించడానికి, బ్లాక్ల జాబితా ముగింపులోcatch
దాదాపు ప్రతి మినహాయింపును పొందగల బ్లాక్లను ఉంచడం ఉత్తమం .catch
ఈ రకం సాధారణంగా జావాలో సాధ్యమయ్యే ప్రతి మినహాయింపును క్యాచ్Throwable
చేయగలదు . మీరు దీన్ని మొదటి బ్లాక్లో ఉంచినట్లయితే, కోడ్ కంపైల్ చేయబడదు, ఎందుకంటే కోడ్ యొక్క చేరుకోలేని బ్లాక్లు ఉన్నాయని కంపైలర్కు తెలుసు.catch
GO TO FULL VERSION