Q1: In C#, you have to use System.Console.xxx in order to access the streams for input, output, and error: System.Console.Error is the standard error you can write to.
http://msdn.microsoft.com/en-us/library/system.console.aspx
Q2: You exit with:
System.Environment.Exit( exitCode );
http://msdn.microsoft.com/en-us/library/system.environment.exit.aspx
Q3: Yes, C# programmers raise (throw) exceptions (objects of classes deriving from the Exception class), and catch them in upper-level callers.
If you want to catch errors in the entire program, you just encapsulate the entire main() procedure in a try...catch:
class App {
public static void Main(String[] args)
{
try {
<your code here>
} catch(Exception exc) {
<exception handling here>
}
finally {
<clean up, when needed, here>
}
}
}