Saturday 15 March 2014

Interview Questions and Answers Of Exception Handling in C#

1.What is an Exception?

 An exception is an error that occurs during program execution. Generally, an exception describes an unexpected event. For example, an exception will occur if a program requests more memory than the operating system can provide. This exception is known as an Out of Memory Exception.

2.Exception Handling in C#?
Exception handling is an in built mechanism in .NET framework to detect and handle run time errors. The .NET framework contains lots of standard exceptions. The exceptions are anomalies that occur during the execution of a program. They can be because of user, logic or system errors. If a user (programmer) do not provide a mechanism to handle these anomalies, the .NET run time environment provide a default mechanism, which terminates the program execution.
4.Why is it a bad idea to throw your own exceptions?

 Well, if at that point you know that an error has occurred, then why not write the proper code to handle that error instead of passing a new Exception object to the catch block? Throwing your own exceptions signifies some design flaws in the project.


 5.What is the purpose of the finally block?


 The code in finally block is guaranteed to run, irrespective of whether an error occurs or not. Critical portions of code, for example release of file handles or database connections, should be placed in the finally block.


 6.How do you handle errors in C#?


 C# and VB.NET use structured error handling (unlike VB6 and earlier versions where error handling was implemented using Goto statement). Error handling in both VB.NET and C# is implemented using Try..Catch..Finally construct (C# uses lower case construct – try…catch…finally).

7.Describe how exceptions are handled by the CLR?

  Usually the exceptions that occur in the try are caught in the catch block. The finally is used to do all the cleaning up work. But exceptions can occur even in the finally block. By using CLR, the exception are caught even in the finally block. Also when an exception is thrown, the CLR looks for an appropriate catch filter that can handle the exception and then it executes the finally block before terminating the execution on the catch filter.

8.Does C# have a 'throws' clause?


 No, unlike Java, C# does not require (or even allow) the developer to specify the exceptions that a method can throw.


9.When should I throw an exception?


 This is the subject of some debate, and is partly a matter of taste. However, it is accepted by many that exceptions should be thrown only when an 'unexpected' error occurs. How do you decide if an error is expected or unexpected? This is a judgement call, but a straightforward example of an expected error is failing to read from a file because the seek pointer is at the end of the file, whereas an example of an unexpected error is failing to allocate memory from the heap.


10.what is the difference between finally and  finalize() ?

finally:- It is a block associated with try catch to maintain cleanup code. Finally block will be executed always irrespective of whether exception is raised or not raised or whether the exception is handle or not handle.


finalize():- It is a method, Garbage collector always calls this method just before destroying any object to perform cleanup activities.


11.Difference between "throw" and "throw ex" in .NET?

If you use "throw" statement, it preserve original error stack information.
If you use"throw ex" statement, stack trace of the exception will be replaced with a stack trace starting at the re-throw point.

12.What is the difference between system exceptions and application ?

 System.SystemException -> This class is for exceptions that r usually thrown by the .net runtime, or which r considered to be of a generic nature and must be thrown by almost any application. For example, StackOverflowException will be thrown by the .net runtime if it detects the stack is full.

 System.ApplicationException-> This class is important, becoz it is the intended base for any class of exception defined by third parties. Hence, if u define any exceptions covering error conditions unique to ur application, u should derive these directly or indirectly from System.ApplicationException.

13.A try block having 4 catch block will fire all catch block or not?

 No, A try having more than one catch block will fire the first relevant catch block after that cursor will be moved to the finally block (if exists) leaving all remaining catch blocks. 

So in all cases only one catch block will fire.



14.Can we have try block without catch?


 Yes,We can write Try { } Finally { } block. In this case exception will be thrown in try block if it is but code inside finally block will execute.

15.can we write return statement in try catch or finally block?

 Yes,We can write the return statement in try catch & finally. The only thing is that even if we write return statement in try bloack or catch block the finally block will always get executed.The only case in which finally block does not execute is when we write System.Environment.Exit(0) in either try or catch.

16.Explain Try/catch block of exception handling?

 You can enclose code in Try/Catch/Finally block. You can catch all exceptions in the catch block. The third part of this block is finally. It is executed irrespective of the fact that an exception has been raised.

17.When can you use tracing with exception handling?

 You can use tracing with exception handling to log unanticipated exception to the trace log. The log file can be used to diagnose unanticipated problems and thus can be corrected.

18.What are the two diff types of error?
 Run time error and Compile time error.

19. What is the purpose of throw?

In C#, it is possible to explicitly throw an exception, from the program. The throw keyword is used for doing that. The general form of throwing an exception is as follows. 


System.Exception exception_obj = new ArgumentException("This is my Exception message");
throw exception_obj;



or 



throw new ArgumentException("This is my Exception message");





20.What are different types of exception properties ?


 Helplink-- provide link to help files which give more info on the exception raised.
 Message--gives the text that describes the exception.
    Suppose

catch(Exception e)

    {
    throw new Exception("Failure")
     }
  then e.Message will give output as "Failure".

Source--provides the name of assembly from where exception is raised.
Target Site--name of method that throws an error
Stack Trace--provides stack flow of the exception.

Inner Exception--When exception is thrown from one catch to another the message     from first catch is passed as inner exception to second catch.

21.Is it mandatory for a piece of code to have catch or finally when try block is there ?


 Yes. If a try block is there then either catch or finally has to be there or else a compiler error is generated.



22.Does finally get executed if the code throws an error ?



 Finally is always executed.


23. How to throw a custom exception?

  The usual try - catch - finally - entry format has to be followed. However, in this case, instead of using the preset exceptions from the System. Exception, you define your own Exception class and inherit Exception or Application Exception class.
You need to define three constructors in your Own Exception Class: One without parameters, other with String parameter for error message and the last one has to have one parameter as a String and other as an Inner exception object.

24: Can we get Exception in finally block?

yes, we may get.

25: In which assembly System namespace is there?

mscorlib.dll assembly contain system namespace

26. What is the purpose of Exception Handling?


An exception can occur anytime during the execution of an application. Your application must be prepared to face such situations. An application will crash if an exception occurs and it is not handled.
"An exception handler is a piece of code which will be called when an exception occurs.


27. Is finally block will be execute always?


Yes finally block will be executed always irrespective of whether exception raised or not raised whether exceptions are handled or not handle. There is one situation where the finally block won’t be executed if the CLR is going to be shutdown.


28. If return statement present inside try is finally block will be executed?


Ans. Yes, if return statement present inside try, then also finally block will be executed. finally block will dominate return statement also.

29.  Is it possible to write any statement between try-catch and finally?

Ans. No, it is not possible to write any statement between try catch and finally. If we will try to write any statement between them then we will get compile time error.


30.    After throw is it allow to take any statement directly?


Ans.  After throw statement we are not allow to place any statement directly violation leads to compile time error saying Unreachable Statements.


31.If no exception handling is provided in the program, what will happen ? 

 If an exception is not 'handled' in code, the application will crash and user will see an ugly message. Instead, you can catch the exception, log the errors and show a friendly message to the user.

32.What is Inner Exception?

The InnerException is a property of an exception. When there are series of exceptions, the most current exception can obtain the prior exception in the InnerException property. 


Let us say we have an exception inside a try block throwing an ArgumentException and the catch clause catches it and writes it to a file. However, if the file path is not found, FileNotFoundException is thrown. Let's say that the outside try block catches this exception, but how about the actual ArgumentException that was thrown? Is it lost? No, the InnerException property contains the actual exception. This is the reason for the existence of an InnerException property for any exception.












3 comments: