using System;
using System.Collections;
class Class1 {
static void Main(string[] args) {
long lngResult;
long lngValue = 0;
try {
lngResult = 8 / lngValue;
}
catch {
Console.WriteLine("catch");
}
finally {
Console.WriteLine("finally");
}
}
}
Language Basics
Catch without Exception type
using System;
using System.Collections;
class Class1 {
static void Main(string[] args) {
long lngResult;
long lngValue = 0;
try {
lngResult = 8 / lngValue;
}
catch {
Console.WriteLine("catch");
}
finally {
Console.WriteLine("finally");
}
}
}
try and catch exception
using System;
using System.Collections;
class Class1 {
static void Main(string[] args) {
long lngResult;
long lngValue = 0;
try {
lngResult = 8 / lngValue;
}
catch {
Console.WriteLine("catch");
}
finally {
Console.WriteLine("finally");
}
}
}
Throw exception from getter
using System;
public class MyValue {
public String Name;
}
class CardDeck {
private MyValue[] Cards = new MyValue[52];
public MyValue GetCard(int idx) {
if ((idx >= 0) && (idx <= 51))
return Cards[idx];
else
throw new IndexOutOfRangeException("Invalid Card");
}
public static void Main(String[] args) {
try {
CardDeck PokerDeck = new CardDeck();
MyValue HiddenAce = PokerDeck.GetCard(53);
} catch (IndexOutOfRangeException e) {
Console.WriteLine(e.Message);
} catch (Exception e) {
Console.WriteLine(e.Message);
} finally {
// Cleanup code
}
}
}
[/csharp]
Throw and catch Exception
using System;
class ExceptionThrower {
static void MethodOne() {
try {
MethodTwo();
} finally { }
}
static void MethodTwo() {
throw new Exception("Exception Thrown in Method Two");
}
public static void Main(String[] args) {
try {
ExceptionThrower FooBar = new ExceptionThrower();
MethodOne();
} catch (Exception e) {
Console.WriteLine(e.Message);
} finally {
// Cleanup code
}
}
}
Exception Translation: CLR catches an exception and rethrows a different exception. The inner exception contains the original exception.
using System;
using System.Reflection;
public class MyClass {
public static void MethodA() {
Console.WriteLine("MyClass.MethodA");
throw new Exception("MethodA exception");
}
}
public class Starter {
public static void Main() {
try {
Type zType = typeof(MyClass);
MethodInfo method = zType.GetMethod("MethodA");
method.Invoke(null, null);
} catch (Exception except) {
Console.WriteLine(except.Message);
Console.WriteLine("original: " + except.InnerException.Message);
}
}
}
Switch based console menu
/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa
Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
namespace nsSwitch
{
using System;
public class nsSwitch
{
static void Main ()
{
bool done = false;
do
{
clsAnimal dog = new clsAnimal (1);
clsAnimal cat = new clsAnimal (2);
clsAnimal goldfish = new clsAnimal (3);
clsAnimal aardvark = new clsAnimal (4);
Console.WriteLine ("Select one of the following:");
Console.WriteLine (" 1 -- For dogs");
Console.WriteLine (" 2 -- For cats");
Console.WriteLine (" 3 -- For goldfish");
Console.WriteLine (" 4 -- For aardvarks");
Console.Write ("Enter Your selection (0 to exit): ");
string strSelection = Console.ReadLine ();
int iSel;
try
{
iSel = int.Parse(strSelection);
}
catch (FormatException)
{
Console.WriteLine ("
What?
");
continue;
}
Console.WriteLine ("You selected " + iSel);
switch (iSel)
{
case 0:
done = true;
break;
case 1:
Console.WriteLine (dog);
break;
case 2:
Console.WriteLine (cat);
break;
case 3:
Console.WriteLine (goldfish);
break;
case 4:
Console.WriteLine (aardvark);
break;
default:
Console.WriteLine ("You selected an invalid number: {0}
", iSel);
continue;
}
Console.WriteLine ();
} while (!done);
Console.WriteLine ("
Goodbye!");
}
}
class clsAnimal
{
public clsAnimal (int Type)
{
PetType = Type;
}
private int Type;
public int PetType
{
get {return (Type);}
set {Type = value;}
}
public override string ToString()
{
switch (PetType)
{
default:
return ("Unknown pet");
case 1:
return ("Your pet type is a dog");
case 2:
return ("Your pet type is a cat");
case 3:
return ("Your pet type is a goldfish");
case 4:
return ("Your pet type is an aardvark");
}
}
}
}