u`
eLXgҁFp.327uexception03.csv
Q[JKFG@̏oAG@̈ړAՓ˔

p.326 ONX̎ȃoiČfځj

EcatchubNɈƂėONXƈw肷邱ƂœOIuWFNg́A
@ONXɋʂȃoi\bhƃvpeBjpē
Eڍׂ͌hLgŉ{\
@https://learn.microsoft.com/ja-jp/dotnet/api/system.exception?view=net-8.0
EȂAeLXgɋLڂToString()\bh́AONXɌ̂ł͂ȂAׂẴNXɂāA
@̏Ԃ\bhƂċLq(I[o[Ch)ƂĂB

p.326 System.ObjectNXiČfځj

EObject^Int32ȂǂƓl.NETt[[N^łA.NETt[[N^ɂׂ͂đΉNX܂͍\̂񋟂Ă
Eint^ȂǂƓlɁAobject^pƁA.NETt[[NObject^ƂĈ
Eobject/Object^ɑΉNXSystem.ObjectNXŁASẴNẌÖق̊{NX([gNX)ƂĒ`ĂA
@pw肵ȂĂAIɗp
ESystem.ObjectNX̎Ă郁öToString()\bhȂ̂ŁAׂẴNXɂToString()\bh
@I[o[Ch\B
ÊƂ𗘗pāAIuWFNg(Qƕϐ)Console.WriteȂǂɎw肷ƁAIɁuQƕϐ.ToString()v
@s悤ɂȂĂB
F p.327 exception03.csŁuConsole.Write(io)vƁuConsole.Write(io.ToString())vsĂ邪ʂɂȂ

p.327 exception03.cs

//p.327 exception03.cs
using System;
class exception03 {
    public static void Main() {
        int[] arr = new int[5];
        try { //O͈
            arr[5] = 10; //z͈͊OO
        } catch (IndexOutOfRangeException io) { //z͈͊OO
            Console.WriteLine(io); //io.ToString()̌ʕ\
            Console.WriteLine("[io]---------");
            Console.WriteLine(io.Source); //AvP[V
            Console.WriteLine("[io.Source]---------");
            Console.WriteLine(io.Message); //ObZ[W
            Console.WriteLine("[io.Message]---------");
            Console.WriteLine(io.ToString()); //Oe
            Console.WriteLine("[io.ToString()]---------");
            Console.WriteLine(io.TargetSite); //\bh
            Console.WriteLine("[io.TargetSite]---------");
        }
    }
}

p.328icatchubN̏j

Ep.324̒ʂucatch{c}v݂̂ň̂Ȃ`ASO𖳏ŕߑ
Eucatch(ONX ){c}vƂ邱ƂŁAߑO(O̊{NX)w肵ÃooRŗpł
EopKvȂ΁ucatch(ONX){c}vƈȗ邱Ƃ\
Euif`else ifv\ƓlɁA1tryɑ΂ĕcatchLqł
EAuif`else ifv\ƓlɁAォ珇ɕ]邱Ƃɒ
Ep֌ŴONXw肷ꍇ́AhNXɂȂƁA{NXcatchĂ܂ƂɂȂu΂ɎsȂ\[XvƂȂ邽߃G[ɂȂB

p.329 exception04.cs

//p.329 exception04.cs
using System;
class exception04 {
    public static void Main() {
        int x = 10, y = 0;
        try { //O͈
            Console.WriteLine("{0} / {1} = {2}", x, y, x / y); //[ZO
        } catch (IndexOutOfRangeException io) { //z͈͊OO(sΏۊO)
            Console.WriteLine(io.Message);
        } catch (DivideByZeroException) { //[ZO
            Console.WriteLine("0ŊႾ߂"); //ȍ~catch͖
        } catch (Exception ex) { //O()
            Console.WriteLine(ex.Message);
        }
    }
}

AWKFp.329 exception04.cs

Ep.330̂悤ɏƃG[ɂȂ邱ƂmF悤

쐬

//p.329 exception04.cs
using System;
class exception04 {
    public static void Main() {
        int x = 10, y = 0;
        try { //O͈
            Console.WriteLine("{0} / {1} = {2}", x, y, x / y); //[ZO
        } catch (Exception ex) { //O()
            Console.WriteLine(ex.Message);
        } catch (IndexOutOfRangeException io) { //z͈͊OOG[
            Console.WriteLine(io.Message);
        } catch (DivideByZeroException) { //[ZOG[
            Console.WriteLine("0ŊႾ߂"); 
        }
    }
}

AWKFp.329 exception04.cs

Eɖ߂ĂAtryubN̒HvāAR̗OSĎ悤ɂ悤
ER\[͂lɂāAz͈͊OOA[ZOAI[ot[ON悤ɂ悤
EI[ot[OExceptionNXŕߑΗǂ

//AWKFp.329 exception04.cs
using System;
class exception04 {
    public static void Main() {
        int[] x = new int[2];
        try { //O͈
            Console.Write("YF"); 
            int i = int.Parse(Console.ReadLine()); //I[o[t[A`O\
            Console.Write("lF"); 
            x[i] = int.Parse(Console.ReadLine()); //z͈͊OAI[o[t[A`O\
            Console.WriteLine("10 / {0} = {1}", x[i], 10 / x[i]); //[ZO\
        } catch (IndexOutOfRangeException io) { //z͈͊OO
            Console.WriteLine(io.Message);
        } catch (DivideByZeroException) { //[ZO
            Console.WriteLine("0ŊႾ߂");
        } catch (Exception ex) { //O(I[o[t[A`O͂)
            Console.WriteLine("̗̑OF" + ex.Message);
        }
    }
}

p.330 finallyubN

EOɂėO̗Lɂ炸sꍇAfinallyubNpċLq
EpƂẮAf[^x[XʐMȂǂ̊O\[X̐ؒfAs҂ւ̒ʒmȂǂ̂悤ȌnB
EOȂ΁AtryubN̖̎finallyubN̓esꏈs
EOcatchꂽꍇ́AcatchubN̖̎finallyubN̓esꏈs
EOcatchȂꍇ́AfinallyubN̓esǍ̖ňُI

p.331 exception05.cs

//p.331 exception05.cs
using System;
class exception05 {
    public static void Main() {
        string strWarusu; //͗p
        int x; //ϊ
        bool bEnd = false; //ItO(lFIt)
        while (true) { //[v
            Console.Write("鐔--- ");
            strWarusu = Console.ReadLine();
            try { //OΏ
                x = int.Parse(strWarusu); //`OAI[o[t[O\
                Console.WriteLine("10 / {0} = {1}", x, 10 / x); //[ZO\
            } catch (DivideByZeroException d) { //[ZO
                Console.WriteLine(d.Message);
            } catch (Exception e) { //̗̑O
                Console.WriteLine(e.Message);
            } finally { //O̗Lɂ炸s邱
                Console.Write("܂(Y/N)---");
                if (Console.ReadLine()[0] == 'N') {
                    bEnd = true; //ItOI
                }
            }
            if (bEnd) { //ItOIH
                break; //JԂII
            }
        }
    }
}

p.333 throw

EvO}O𓊂邱Ƃł
EႦ΁AOƓlɈ悤ȏԁiFg̐j̎ɕ֗
E܂AcatchubN̒ŗOĂяoɈ˗ꍇɂL
 ʏAĂ΂Ă郁\bh̗̒Oł́AΏ߂ȂꍇAΏdĂ܂Ƃ̂ŁAĂł鑤ɔCǂ
EF throw OIuWFNg;
 catcḧŎ󂯎OIuWFNgp邱Ƃł邪AKvł΁AL̏ŗOIuWFNg𐶐ēƗǂ
@throw new ONX();

p.334 exception06.cs

//p.334 exception06.cs
using System;
class MyClassA {
    public void Calc() {
        int x = 10, y = 0;
        int[] arr = new int[5] { 1, 2, 3, 4, 5 };
        try { //O͈
            Console.WriteLine("{0}, {1}", arr[x], x / y); //z͈͊OO
        } catch (IndexOutOfRangeException i) { //z͈͊OO
            Console.WriteLine(i.Message);
            DivideByZeroException d = new DivideByZeroException(); //[ZOIuWFNg
            Console.WriteLine("Othrow܂");
            throw d; //[ZOIuWFNg𓊂
        }
    }
}
class MyClassB {
    public void Calc() {
        MyClassA a = new MyClassA();
        try { //O͈
            a.Calc(); //[ZOiĂj
        } catch (DivideByZeroException d) { //[ZO
            Console.WriteLine("Ocatch߂ł");
            Console.WriteLine(d.Message);
        }
    }
}
class exception06 {
    public static void Main() {
        MyClassB b = new MyClassB();
        b.Calc(); //ʓIɗOߑ̂ŐI
    }
}

p.336iPƂthrowj

EcatchubN̒Łuthrow;vƒPƂŎsƁA̗ÕIuWFNg𓊂

p.336 exception07.cs

//p.336 exception07.cs
using System;
class MyClass {
    int x = 5, y = 0;
    public void Calc() {
        try { //OΏ
            Console.WriteLine("{0}", x / y); //[ZO
        } catch (DivideByZeroException d) { //[ZO
            Console.WriteLine(d.Message);
            throw; //ďoփ[ZO𓊂
        }
    }
}
class MyClassB {
    public static void Main() {
        MyClass mc = new MyClass();
        try { //OΏ
            mc.Calc(); //[ZOiĂj
        } catch (DivideByZeroException d) { //[ZO
            Console.WriteLine(d.TargetSite); //\bh\
        }
    }
}

p.337 trỹlXg

EtryubN̒ɁAtry-catch\Lqł
EɂAtry-catch\ŏdĂLq΁AOtryubNcatchł܂Ƃ߂ĈƉ\

p.337 exception08.cs

//p.337 exception08.cs
using System;
class exception08 {
    public static void Main() {
        int x = 10, y = 0;
        try { //O̗OΏ(̒ɕ̃[ZO𓊂鏈Lq)
            try { //̗OΏ
                Console.WriteLine("{0},{1}", x / y); //[ZO
            } catch (IndexOutOfRangeException i) { //z͈͊OO(ΏۊO)
                Console.WriteLine(i.Message);
            } //ŗOԂ̂܂܂ɂȂ
        } catch (DivideByZeroException d) { //[ZO(Ώ)
            Console.WriteLine(d.Message); //s
        }
    }
}

p.338 Ǝ̗O

ESĂ̗ONX̊{NXłExcptionNX́AvO}p邱ƂĂAO̔hNX܂Oɗp\
EāAꕔA̔hONXp\
EāAExcptionNX܂́A̋߂hONXpāAƎ̗OƗǂ
F `߂Ă͂Ń[sv̓͂Ό`O̔hNX̃IuWFNg𓊂Ɨǂ
EƎ̗OɂẮAToString()\bhMessagevpeBI[oChāAƗǂiK{̏ꍇj

p.339 exception09.cs

//p.339 exception09.cs
using System;
class MyEx : DivideByZeroException { //[ZONXpOONX
    public new string Message = "0ŊG[ł"; //bZ[W㏑
    public new string HelpLink = "http://www.kumei.ne.jp/c_lang/"; //N㏑
    public override string ToString() { //\bhI[o[Ch
        return "0ŊĂ͂܂!!";
    }
}
class exception09 {
    public static void Main() {
        int x;
        Console.Write("鐔()--- ");
        string strWaru = Console.ReadLine();
        try { //O͈
            x = int.Parse(strWaru); //`OAI[o[t[Ỏ\
            if (x == 0) {
                throw new MyEx(); //O̗O𓊂
            }
            Console.WriteLine("12 / {0} = {1}", x, 12 / x); //[ZO͔Ȃ
        } catch (MyEx me) { //O̗Ȍ
            Console.WriteLine(me.ToString()); //I[o[Ch\bhĂ
            Console.WriteLine(me.Message); //㏑bZ[W
            Console.WriteLine(me.HelpLink + "Q"); //㏑N
        } catch (Exception e) { //`OAI[o[t[O
            Console.WriteLine(e.Message);
        }
    }
}

p.341 checkedunchecked

Eint^Ȃǂ̐l^ϐւ̑̎_ŁǍ^͈̔͂𒴂ĂƃI[o[t[O
EAvZrɂ^͈̔͂̒߂ł͔AʂɂȂ
Ej~ꍇ́AcheckedubN̒ɒu΂悢
EāAOKvł΁AtryubN̒checkedubNLqƗǂ
EeLXgł́uchecked()v`ЉĂ邪AȂꍇ
EȂAcheckedubN̒̈ꕔɂāǍʂ𖳌ꍇ́A͈̔͂uncheckedubNɂ΂悢

p.343 checked02.cs

//p.343 checked02.cs
using System;
class checked02 {
    public static void Main() {
        int x, y, z;
        try { //OΏ
            checked { //vZr̃I[o[t[OƂ͈
                x = int.MaxValue;
                y = 1;
                z = x + y; //vZr̃I[o[t[˗O𓊂
                Console.WriteLine(z); //sȂ
            }
        } catch (OverflowException o) { //I[o[t[O
            Console.WriteLine(o.Message);
            Console.WriteLine(o.StackTrace);
        }
    }
}

p.344 K qg

Eufor[vŁvƂ邪AI̎w肪Ȃ̂Łufor (byte b = 1; ; b++)vƂ[vɂȂ
E삪킩悤ɁAfor̒Œl\Ɨǂ
EucatchvŃI[o[t[ȌLqA|\AbreakŖ[v𔲂邱

쐬

//p.344 K
using System;
class ex13 {
    public static void Main() {
        byte x = 1;
        for (byte b = 1; ; b++) { //[v
            try { //OΏ
                checked { //vZr̃I[o[t[OƂ͈
                    x *= b; ////vZr̃I[o[t[˗O𓊂
                    Console.WriteLine("rF" + x);
                }
            } catch (OverflowException o) { //I[o[t[O
                Console.WriteLine(o.Message);
                break;
            }
        }
        Console.WriteLine("ŏIF" + x);
    }
}

eLXgҎ\Fp.345 Zq̃I[o[[hƂ 

Q[JK

EG@̏oAG@̈ړAՓ˔

K32 G@̏oƈړ

EԊuƂɓG@@̒̏[͈͊OɏoAɈړ悤ɂ悤
EG@̍ő吔20@ƂAȏ͏oȂ
EoԊu̓^C}[C^[o50{Ƃ
Eړ5Ƃ
EeƓlɉʉŌȂȂoȌԂɖ߂
EG@̉摜͉L𗘗p\
@http://rundog.org/si/enemy.gif

菇

@ G@摜̓ǂݍ݂ǋLBImage enemyi 
A G@̍ő吔Bint maxenemy 
B G@̍\̃IuWFNgz𐶐 Item[] enemya 
C G@̏o҂Ԃ waitenemy 
D G@̏oԊu enemyint 
E `揈FSG@ɂāA\Ԃł̂\鏈
F ^C}[CxgFG@o҂Ԃ[ł΁A\łG@vf\ԂɂA@ƓXWA[̒YWȂǂݒ
@܂AG@̏o҂ԂɓG@̏oԊuZbg
G ^C}[CxgFSG@ɂāAֈړA[艺ɏo\ɂ
H ^C}[CxgFG@o҂ԂZbgĂJEg_E

oFK32 G@̏oƈړiOKj

Q[JK\FG@̏oEړ̃tH[A@ƓG@̏Փ˔AQ[I[o[
