Professional Documents
Culture Documents
C# Farsi Course
C# Farsi Course
C# Farsi Course
، تشای اًجام ایيکاس. تگیشیذ،ّا سا تذٍى دس ًظش گشفتي ًَع آىّا exception هوکي است تخَاّیذ توام،تؼضی ٍقتّا
. ًذاسدexception variable ٍ exception type ِ هطخص هیکٌیذ کcatch یک هذل
catch {
// handle exceptions
}
exception هیضَد ٍ تضویي هیکٌذ کِ تواهی catch all exception handler خظ کذ تاال تاػج تٍِجَد آهذى یک
.ّای تٍِجَد آهذُ گشفتِ ضًَذ
4 / 2 is 2
Some exception occurred.
16 / 4 is 4
32 / 4 is 8
Some exception occurred.
128 / 8 is 16
Some exception occurred.
Some exception occurred.
*/
. ّا تاضذcatch دس لیستcatch تایذ آخشیيcatch all exception handler ًِکتِی هْن دیگش ایي است ک
استفادُ کٌیذ ٍ تِعَس هؼوَل تْتش است کِ ّش ًَع catch all handler دقت داضتِ تاضیذ کِ ًثایذ دس ّوِی هَاسد اص
.هطکل است handler ّا دسٍى یک exception کشدى توام handle ّوچٌیي.کٌیذ handle ًِسا جذاگا exception
ّا سا تِعَس کلی تا استفادُ اصexception ِ دس ضشایظ خاصی استفادُ هیضَد ٍ ًثایذ ّویطcatch all handler تٌاتشایي اص
. کشدhandle آى
داخلی کِ تَسظtry block تٍِجَد آهذُ دسException . دیگش قشاس گیشدtry block هیتَاًذ دسٍى یکtry block یک
. خاسجی گشفتِ ضَدtry block ِ هشتَط تcatch هیتَاًذ تَسظ، گشفتِ ًطذُ تاضذtry هشتثظ تا ّواىcatch
: خاسجی آى سا هیگیشدtry block ٍ ُ داخلی گشفتِ ًطذtry block تَسظIndexOutOfRangeException ،دس هثال صیش
try
{
// outer try
for (int i = 0; i < numer.Length; i++)
{
try
{
/* Output
4 / 2 is 2
Can't divide by Zero!
16 / 4 is 4
32 / 4 is 8
Can't divide by Zero!
128 / 8 is 16
No matching element found.
Fatal error -- program terminated.
*/
ِ تِ تشًاه،)divide-by-zero ضَد (دس ایيجا handle داخلی try block ای کِ هیتَاًذ تَسظ exception ،دس ایي هثال
ُ خاسجی گشفتِ ضذtry block تَسظ،ِ تٍِجَد آهذُ تِدلیل گزضتي اص حذ آسایexception اها.اجاصُ هیدّذ تا اداهِ یاتذ
.ٍ هَجة تِ پایاى سسیذى تشًاهِ هیضَد
ّا error تؼضی اص.ضًَذ handle ّای هختلف اجاصُ هیدّذ تا اص سٍشّای هتفاٍتی error ِّای تَدستَ ت Try block
تیطتش تشًاهًَِیساى.قاتل اصالح کشدى ًیستٌذ ٍ تؼضی دیگش خغاّای کَچکی ّستٌذ کِ هیتَاًٌذ تالفاصلِ دسست ضًَذ
try block کشدى خغاّایی کِ سخت قاتل اصالح کشدى ّستٌذ استفادُ هیکٌٌذ ٍ اصhandle خاسجی تشایtry block اص
try block ضوا ّوچٌیي هیتَاًیذ اص. تْشُ هیتشًذ،داخلی تشای دسست کشدى خغاّایی کِ ساحتتش اصالح هیضًَذ
ُ استفاد، ًطذُاًذhandle داخلیtry block ّایی کِ دسerror کشدىhandle تشای catch all handler خاسجی تِػٌَاى
.کٌیذ
دس هثالّای قثلّ exception ،ایی کِ تِعَس خَدکاس تَسظ runtime systemتَلیذ ضذُ تَدًذ ،گشفتِ هیضذًذ .اها ضوا
هیتَاًیذ تِصَست دستی یک exceptionسا تا استفادُ اص کلوِکلیذی throwپشتاب کٌیذ.
;throw exceptOb
دس ایيجا exceptOb ،تایذ یک ضیء اص کالس یک exceptionتاضذ کِ اص Exceptionاسثتشی کشدُ است.
;using System
class ThrowDemo
{
)(static void Main
{
try
{
;)"Console.WriteLine("Before throw.
;)(throw new DivideByZeroException
}
)catch (DivideByZeroException
{
;)"Console.WriteLine("Exception caught.
}
;)"Console.WriteLine("After try/catch statement.
}
}
/* Output
Before throw.
Exception caught.
After try/catch statement.
*/
ساختِ ضذُ است .تِ یاد داضتِ new تا استفادُ اص throw دس قسوت DivideByZeroException ّواىعَس کِ هیتیٌیذ،
تاضیذ کِ throwیک ضیء سا پشتاب هیکٌذ .تٌاتشایي ضوا تایذ یک ضیء تشای آى تساصیذ تا آى سا پشتاب کٌذ .ایي تذاى
default هؼٌاست کِ ًویتَاًیذ یک typeسا پشتاب کٌیذ .دس ایي هَسد ،تشای ساخت ضیء DivideByZeroExceptionاص
ّا هَجَد ّستٌذ .دس اکثش هَاسد، exception ّای دیگش ًیض تشای constructor استفادُ ضذُ است اها constructor
ّایی ّستٌذ کِ خَدتاى ساختِایذ .دس اداهِی ایي هثحج exception class ّایی کِ پشتاب هیکٌیذ اضیای exception
سپس هیتَاًذ تَسظ یک exception هیتَاًذ هجذداً پشتاب ضَد ٍ ایي catch گشفتِ ضذُ تَسظ یک exception یک
ّای تیطتشی handler ایي است exception یکی اص هْنتشیي دالیل پشتاب هجذد یک.گشفتِ ضَد outer catch
یک جٌثِ اص،اٍل exception handler هوکي است، تِػٌَاى هثال.دستشسی داضتِ تاضٌذ exception ِهیتَاًٌذ ت
تشای پشتاب هجذد. کٌذhandle تٍِجَد آهذُ سا exception جٌثِی دیگشی اص، دٍمexception handler ٍ exception
: تِضکل صیش. استفادُ کٌیذthrow کافی است فقظ تِ تٌْایی اص کلوِیexception یک
throw;
outer block تایذ تَسظ یک exception ایي،سا هجذداً پشتاب هیکٌیذ exception یِیاد داضتِ تاضیذ ٌّگاهیکِ یک
.گشفتِ ضَد
using System;
class Program
{
static void Main()
{
// Comment out the first 1-2 method invocations.
try
{
A();
B();
C(null);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
/* Output
//// if you comment out the first and second method invocations:
Value cannot be null.
Parameter name: value
*/
A() تٌْا هتذ، دس ایي ٌّگام. سا هطاّذُ خَاّیذ کشدAttempted to divide by zero اگش تشًاهِی تاال سا اجشا کٌیذ پیغام
تٍِجَدexception ، اجشا هیضَدA() ٌّگاهیکِ دس اتتذا هتذ. فشاخَاًی ًویضًَذC() ٍ B() فشاخَاًی ضذُ است ٍ هتذّای
ُفشستاد Main() ضذُ ٍ تِ هتذ throw ُضذُ است) دٍتاس catch ٍ یکتاس throw یکتاس A() آهذُ (کِ اتتذا دسٍى هتذ
.ضَد handle تٍِجَد آهذُ است کِ تایذ exception یک A() پس اص فشاخَاًی Main() اکٌَى دسٍى هتذ.هیضَد
اص.دادُ ضذُ ٍ پیغام خغای تٍِجَد آهذُ ًوایص دادُ هیضَد Main() دسٍى catch ِتٌاتشایي تالفاصلِ کٌتشل تشًاهِ ت
دس.کٌیذ خشٍجی هتفاٍتی هیتیٌیذ comment ساB() ٍ A() اگش هتذّای.دیگش اجشا ًویضًَذ C() ٍ B() ایيسٍ هتذّای
ضذُ ٍ دسٍى هتذthrow تٍِجَد آهذُ تشای اٍلیيتاسexception ًذاسین صیشاexception دیگش پشتاب هجذدC() هَسد هتذ
. هیضَدhandle ِاصلی تشًاه
// Rethrow an exception.
using System;
class Rethrow
{
public static void GenException()
{
/* Output
4 / 2 is 2
Can't divide by Zero!
16 / 4 is 4
32 / 4 is 8
Can't divide by Zero!
128 / 8 is 16
No matching element found.
Fatal error -- program terminated.
*/
اها. ضذُ استhandle تٍِجَد آهذُ ٍ دس ّواىجا ًیضGenException() دس هتذDivideByZeroException ،ِدس ایي تشًاه
. ٍاگزاس ضذُ استMain() تِ هتذIndexOutOfRangeException کشدىhandle
exception هوکي است یک، تشای هثال. اجشا ضَدtry/catch گاّیاٍقات ضوا هیخَاّیذ یک تلَک اص کذ حتواً پس اص
ِ سا تاص کشدُ است کnetwork connection تاػج ضَد تا اداهِی اجشای یک هتذ پایاى یاتذ اها آى هتذ یک فایل یا یک
ایي چٌیي ضشایغی دس تشًاهًَِیسی صیاد ّستٌذ ٍ سیضاسج ساُ حل سادُ ٍ هٌاسثی تشای آى.حتواً تایذ دس ًْایت تستِ ضَد
فشم. ّا قشاس تگیشدcatch تایذ دس اًتْای دًثالِیFinally block . استfinally block استفادُ اص،اسائِ دادُ کِ ایي ساُ حل
: تِصَست صیش هیتاضذ، استfinally کِ ضاهلtry/catch کلی
try {
// block of code to monitor for errors
}
catch (ExcepType1 exOb) {
// handler for ExcepType1
}
catch (ExcepType2 exOb) {
// handler for ExcepType2
}...
finally {
// fi nally code
}
دس، تا هَفقیت اجشا ضَد یا خیشtry block ایي تذاى هؼٌاست کِ هْن ًیست. تحت ّش ضشایغی اجشا هیضَدFinally block
. اجشا خَاّذ ضذfinally block ًْایت
// Use finally.
using System;
class UseFinally
{
public static void GenException(int what)
{
int t;
int[] nums = new int[2];
Console.WriteLine("Receiving " + what);
try
{
switch (what)
{
case 0:
t = 10 / what; // generate div-by-zero error
break;
case 1:
nums[4] = 4; // generate array index error
break;
case 2:
return; // return from try block
}
/* Output
Receiving 0
Can't divide by Zero!
Leaving try.
Receiving 1
No matching element found.
Leaving try.
Receiving 2
Leaving try.
*/
ِّویط finally block ،خاسج هیضَد try block هْن ًیست تشًاهِ تِ چِ عشیقی اص،ّواىعَس کِ خشٍجی ًطاى هیدّذ
catch قشاس گیشد دیگش try block دقیقاْ تؼذ اص یک finally block ٌّگاهیکِ یک، اص لحاػ تکٌیکی.اجشا خَاّذ ضذ
ُ ًطذhandle ایexception اجشا خَاّذ ضذ اها ّیچtry block تؼذ اصfinally block ٍ ًویتَاًذ تؼذ اص آىّا تیایذblock
.است