[go: up one dir, main page]

0% found this document useful (0 votes)
8 views13 pages

CH4-Exception Handling

Uploaded by

dekebagonji885
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views13 pages

CH4-Exception Handling

Uploaded by

dekebagonji885
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

Chapter Four

C# Exceptions

1
Exceptions in C#

• Must inherit from System.Exception


• Standard error handling in C#
• Are thrown when:
• the code reaches a throw statement
• System exceptions occur (such as divide by zero)
• No checked exceptions or exception specifications

2
Throw statement

• Must throw an instance of an exception:


throw(new MyException(“Error”));

• May be used by itself only in a catch block:


catch
{
throw;
}

3
Creating an Exception Class

• Inherits from System.Exception or a derived class

public class Exception1 : System.Exception


{
public Exception1(string message) : base(message){}
}

public class SomeException : Exception1


{
public SomeException(string message) : base(message){}
}

4
ApplicationException
• Exceptions defined within an application should extend (inherit from)
System.ApplicationException

Catching an Exception
• A catch block is associated with a try block
• A try block may have more than one catch block
• catch blocks catch the exception type or any derived exception types
passing through
• catch blocks are searched in the order they appear in the code
• catch blocks for specific types must come before the more general
types
• An Empty catch clause will catch any type
• catch clauses don’t need a variable name
• catch(Exception) is ok 5
catch blocks
Wrong Right
void function1() void function1()
{ {
try try
{ {
// code // code
} }
catch(Exception ex) catch(Exception1 ex)
{ {
} }
catch(Exception1 ex) catch(Exception ex)
{ {
} }
}
// if no rethrow occurs
// execution resumes here
}

6
Exception Flow Control
•The exception is passed up until a suitable handler is found

void function1()
{
try
{
try
{
throw(new SomeOtherException(“Error Message”));
}
catch(Exception1 ex)
{
}
}
catch(Exception2 ex)
{
}
}
7
Exception Flow Control
•If no suitable handler (catch clause) was found, the exception is
passed to the calling method

void function2()
{
try
{
Function1();
}
catch(Exception3 ex3)
{
}
catch(Exception2 ex4)
{
}
catch(Exception ex)
{
}
}
8
Unhandled Exceptions
• If no error handler is found the application
terminates
• Control is passed back to Windows

finally block
• Must be associated with a try block
• a try block may have only one finally block
• finally block always gets executed
• The appropriate catch clause is executed first

9
finally Flow Control
void function1()
{
try
{
try
{
throw(new SomeException(“Error Message”));
}
catch(Exception1 ex)
{
}
finally
{
}
}
catch(Exception2 ex)
{
}
finally
{
}
}
10
• ArithmeticException
• ArrayTypeMismatchException
Library • DivideByZeroException
Exceptions • IndexOutOfRangeException
• InvalidCastException
• NullReferenceException

11
• Message
• string message associated with the exception

• InnerException
• If this exception was generated inside an
exception handler, this refers to the original
exception
System.Exception
Class • Source
• Refers to the source class

• StackTrace
• String representing the call stack, file and line
number

12
Breaking On Exceptions
•Debug | Exceptions (or Ctrl + Alt + E)

13

You might also like