Kurzusok
/
C#
C#
/
Feladatok
/
Texas hangszerei
Texas hangszerei

Texas hangszerei

Tanulófeladat

Bevezetés

Kivételek szűrése

A kivételek szűrésének kulcsszava a when. A catch utasítás után áll, és olyan Boolean-kifejezést fogadhat el, amelyben bármilyen, éppen hatókörben lévő érték szerepelhet. Ha a kifejezés értéke igaz, akkor a catch utasításhoz tartozó blokk hajtódik végre, ellenkező esetben pedig a következő catch utasítás kerül sorra, ha van ilyen.

try
{
    // do stuff
}
catch (Exception ex) when (ex.Message != "")
{
    // output the message when it is not empty
}
catch (Exception ex)
{
    // show stack trace or something.
}

Felhasználó által definiált kivételek

A felhasználó által definiált kivétel minden olyan osztály, amelyet a kódodban definiálsz, és amely a System.Exception-ből származik. Az osztályöröklés minden szabálya vonatkozik rá, emellett azonban a fordító és a nyelv futtatókörnyezete különleges módon kezeli az ilyen osztályokat: lehetővé teszi, hogy a példányaikat a normál vezérlési folyamon kívül dobjuk és elkapjuk, ahogy arról az exceptions feladatban szó volt.

A felhasználó által definiált kivételeket gyakran arra használjuk, hogy további információt, például üzenetet és más releváns adatot adjunk át az elkapó rutinoknak.

Utasítások

Miközben az Instruments of Texas-nál dolgozol, az a feladatod, hogy egy C#-ban írt kísérleti számológépen dolgozz. Egy tesztkörnyezetet építesz, amellyel a számológép számos funkcióját ellenőrzöd, kezdve a szorzással. Meglátod majd, hogy különös figyelmet igényel az az eset, amikor a szorzás két operandusa is negatív.

A Calculator osztályt biztosítottuk neked, és nem szabad módosítanod.

1. Egészítsd ki a felhasználó által definiált CalculationException kivétel definícióját

Egészítsd ki a CalculationException konstruktorának definícióját, amelynek el kell tárolnia (be kell csomagolnia) a számológép által dobott kivételt, valamint azokat az operandusokat, amelyek feldolgozása éppen folyt a kivétel dobásának pillanatában.

2. Kezeld a túlcsordulásos eseteket a számológépben, és adj több információt a hívónak

Valósítsd meg a CalculatorTestHarness.Multiply() metódust, amelynek meg kell hívnia a konstruktornak átadott Calculator példány Calculator.Multiply() metódusát, átadva neki az x és y egész értékeket. Ha a Calculator.Multiply() metódusban túlcsordulás történik, az OverflowException kivételt dob. Ezt a kivételt a CalculatorTestHarness.Multiply() metódusban kell elkapni, és be kell csomagolni egy CalculationException kivételbe, valamint az átadott x és y értékeket a kivétel operandusaiként kell eltárolni. Az újonnan létrehozott CalculationException objektumot kell dobni. A Calculator.Multiply() metódus visszatérési értékét figyelmen kívül hagyhatod, ha a hívás sikeres.

var cth = new CalculatorTestHarness(new Calculator());
cth.Multiply(Int32.MaxValue, Int32.MaxValue);
// => throws an instance of CalculationException

var cth2 = new CalculatorTestHarness(new Calculator());
cth2.Multiply(3, 2);
// => silently exits

3. Teszteld a szorzás műveletet érvényes bemenetekkel

Valósítsd meg a CalculatorTestHarness.TestMultiplication() metódust, amely két egész számot vesz át, és meghívja a CalculatorTestHarness.Multiply() metódust. Ekkor a "Multiply succeeded" érték adódik vissza.

var cth = new CalculatorTestHarness(new Calculator());
cth.TestMultiplication(6, 7);
// => "Multiply succeeded"

4. Teszteld a szorzás műveletet negatív bemenetekkel

Módosítsd a CalculatorTestHarness.TestMultiplication() metódust úgy, hogy a "Multiply failed for negative operands. <INNER_EXCEPTION_MESSAGE>" érték adódjon vissza, ha mindkét egész argumentum negatív (nullánál kisebb).

A <INNER_EXCEPTION_MESSAGE> helyőrzőt a CalculationException belső kivételének üzenetére kell cserélni.

var cth = new CalculatorTestHarness(new Calculator());
cth.TestMultiplication(-2, -Int32.MaxValue);
// => "Multiply failed for negative operands. " + innerException.Message

5. Teszteld a szorzás műveletet pozitív bemenetekkel

Módosítsd a CalculatorTestHarness.TestMultiplication() metódust úgy, hogy a "Multiply failed for mixed or positive operands. <INNER_EXCEPTION_MESSAGE>" érték adódjon vissza, ha az egész argumentumok közül legalább az egyik nem negatív.

A <INNER_EXCEPTION_MESSAGE> helyőrzőt a CalculationException belső kivételének üzenetére kell cserélni.

var cth = new CalculatorTestHarness(new Calculator());
cth.TestMultiplication(Int32.MaxValue, Int32.MaxValue);
// => "Multiply failed for mixed or positive operands. " + innerException.Message
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C# Exercism

Készen állsz elkezdeni a(z) Texas hangszerei feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.