எக்செப்சன் ஹாண்ட்லிங்க் என்பது நிரலின் இயக்க நேரத்தில் பிழைகளை கையாளுதல் ஆகும்.
அவ்வாறு கையாளாவிட்டால் சிஸ்டம் பிழை ஏற்படும் பொழுது அப்னார்மல் ஆக சட் டவுன் ஆகும். பிழைகளை முறையாக கையாண்டால் சட் டவுன் ஆகாது பிழை அறிவுப்புகளைக் காட்டும்.
பயன்:
பிழை முறையாக கையாளப் படும்.
சட் டவுன் ஆகாது.
C# எக்செப்சன் கிளாஸ்கள்.
சி ஷார்ப் எக்செப்சன் கிளாஸ்கள் அனைத்தும்System.Exception கிளாஸில் இருந்து இன்ஹெரிட் செய்யப்பட்டவை.
System.DivideByZeroException.
இந்த எக்செப்சன் ஆனது ஒரு எண்ணை ஜீரோவால் வகுக்கும் பொழுது எரியப்படுகின்றது.
System.NullReferenceException.
ஒரு null ஆப்ஜெக்டை ரெஃபெரென்ஸ் செய்யும் பொழுது இந்த பிழை எரியப்படுகின்றது.
System.InvalidCastException
தவறான டைப் கேஸ்டிங்கின் பொழுது இந்த பிழை எரியப்படுகின்றது.
System.IoException.
இது இன்புட் மற்றும் அவுட்புட்டின் பொழுது எரியப்படுகின்றது.
System.FieldAccessException
இது தவறுதலாக பிரைவேட் மற்றும் ப்ரடக்டெட் ஃபீல்டுகளை அனுகும் எரியப்படுகிண்றது.
சி ஷார்ப்பில் எக்செப்சன் ஆனது 4 கீவேர்டுகளை பயன்படுத்தி கையாளப்படுகின்றது. அவை
- try
- catch
- finally, and
- throw
try/catch.
தவறு எங்கு ஏற்பட வாய்ப்புள்ளோஅதோ அது try பகுதியிலும் அது தவறு நேர்ந்தால் இயக்கப்ப்ட வேண்டியவை catch பகுதியிலும் எழுதப்படுகின்றது.
சான்று நிரல்.
Try/catch இல்லாத நிரல்.
using System;
public class ExExample
{
public static void Main(string[] args)
{
int a = 10;
int b = 0;
int x = a/b;
Console.WriteLine("Rest of the code");
}
}
வெளியீடு:
Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero.
Try/catch உள்ள சான்று நிரல்.
using System;
public class ExExample
{
public static void Main(string[] args)
{
try
{
int a = 10;
int b = 0;
int x = a / b;
}
catch (Exception e) { Console.WriteLine(e); }
Console.WriteLine("Rest of the code");
}
}
System.DivideByZeroException: Attempted to divide by zero.
Rest of the code
Finally
Finally என்று குறிப்பிட்டுள்ள பகுதிகள் try பகுதியில்பிழை ஏற்படாவிட்டால் நேரடியாக இயக்கப்படுகின்றன. பிழை ஏற்பட்டால் catch பகுதியில் உள்ள வரிகள் இயக்கப்பட்டு அதற்கடுத்து finally பகுதியில் உள்ள் வரிகள் இயக்கப்படுகின்றன.
using System;
public class ExExample
{
public static void Main(string[] args)
{
try
{
int a = 10;
int b = 0;
int x = a / b;
}
catch (Exception e) { Console.WriteLine(e); }
finally { Console.WriteLine("Finally block is executed"); }
Console.WriteLine("Rest of the code");
}
}
வெளியீடு:
System.DivideByZeroException: Attempted to divide by zero.
Finally block is executed
Rest of the code
சி ஷார்ப் யூசர் டிஃபைண்டு எக்செப்சன்.
இந்த வகையான எக்செப்சன்கள் நிரலாளரால் எழுதப்பட்டு throw கீவேர்டு மூலம் எரியப்படுகின்றது. இதற்கு Exception கிளாசை இன்ஹெரிட் செய்ய வேண்டும்.
using System;
public class InvalidAgeException : Exception
{
public InvalidAgeException(String message)
: base(message)
{
}
}
public class TestUserDefinedException
{
static void validate(int age)
{
if (age < 18)
{
throw new InvalidAgeException("Sorry, Age must be greater than 18");
}
}
public static void Main(string[] args)
{
try
{
validate(12);
}
catch (InvalidAgeException e) { Console.WriteLine(e); }
Console.WriteLine("Rest of the code");
}
}
Output:
InvalidAgeException: Sorry, Age must be greater than 18
Rest of the code
Checked மற்றும் unchecked எக்செப்சன்கள்.
இந்த வகையான எக்செப்சன்கள் இண்டிஜர் டேட்டா டைப்பில் ஓவர் ஃப்லோ ஏற்படும் கைளாளப்படுகின்றது.
Checked:
இந்த பகுதியில் உள்ள வரிகள் இண்டிஜெர் வேரியபிளில் ஒவர் ஃப்லோ ஏற்படும் பொழுது பிழை எரிகின்றது.
-முத்து கார்த்திகேயன், மதுரை
No comments:
Post a Comment