首页 > 试题广场 >

下面代码的输出结果是()

[单选题]

下面代码的输出结果是()

try {
	try {
		int i = 0;
		object value = 1/i;
	} catch(NullReferenceException Exception) {
		Console.Write("Null Re Ex");
	}
	finally {
		Console.Write("Cleanup ");
	}
} catch {
	Console.Write("Generic catch ");
}

  • Null Re Ex Cleanup Generic catch
  • Null Re Ex Cleanup
  • Cleanup Generic catch
  • Generic catch Cleanup
推荐
选C。考察的是:异常发生的类型,捕获所发生的异常类型,finally执行。
  • try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。
  • catch:程序通过异常处理程序捕获异常,catch 关键字表示异常的捕获。
  • finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。
如下代码所示:
usingSystem;

namespaceHelloWorldApplication
{
    publicclassHelloWorld
    {
        staticvoidMain(string[] args)
        {
            try{
                try{
                    inti = 0;
                    objectvalue = 1/i;//1.try将被激活的特定的异常:DivideByZeroException  
                }
                catch(NullReferenceException Exception) {
                    //2.捕获的异常类型和try块的类型不匹配,所以不执行该输出语句
                    Console.Write("Null Re Ex");
                }
                finally{
                    //3. finally 块都要执行
                    Console.Write("Cleanup ");
                }
            }
            catch{
                //4.未指定具体的捕获异常,那么默认就是Exception类型,内部try...catch未解决的在这里全部捕获
                //Exception是所以异常的父类,所以会执行输出该语句。
                Console.Write("Generic catch ");
            }
        }
    }
}

编辑于 2019-04-29 14:28:13 回复(1)
选C,理由如下:
/0异常属于 ArithmeticException;
因此 NullReferenceException 的这个catch块并不会处理/0,而是在执行完finally块之后,将/0异常交给外部catch块处理
编辑于 2019-05-22 16:55:09 回复(0)

此题选C

不bb,给代码

using System;
namespace HelloWorldApplication
{
   public class HelloWorld
   {
      static void Main(string[] args)
      {
        try {
            try {
                int i = 0;
                object value = 1/i;
            }
            catch(NullReferenceException Exception) {
                //因为不是除0异常,所以不进这个处理
                Console.Write("Null Re Ex");
            }
            finally {
                //1 不管异常有没有被处理,都要执行
                Console.Write("Cleanup ");
            }
        }
        catch {
            //2 ***没写能处理的具体异常类型,那么默认就是catch(Exception ex)
            //因为内部没有处理异常,所以,异常就抛到外部来了
            //如果还不处理,就会继续往方法的调用者那儿抛,直到抛到最终用户看到,这可真不好办啊
            Console.Write("Generic catch ");
        }
      }
   }
}

发表于 2019-04-26 16:45:15 回复(1)
finally块表示异常是否抛出,都会执行
发表于 2019-09-26 07:33:37 回复(0)
报的异常不属于空引用异常,但一定会捕获到除数为零的异常,finall必然执行
发表于 2022-06-16 13:23:38 回复(0)
我哭了,C、C++都1000多道题,到C#这就24道。。工控人泪目了。。😅
发表于 2022-05-08 21:46:24 回复(0)
NullReferenceException(未将对象引用到实例)

一、未实例化引用类型实体

比如声明以后,却不实例化

二、未初始化类实例
三、数组为null
四、事件为null
发表于 2021-05-17 15:08:44 回复(0)
NullReferenceException是引用空对象异常
发表于 2019-07-27 23:36:33 回复(0)
有除0异常,DivideByZeroException
发表于 2019-05-11 10:23:25 回复(0)
c

发表于 2019-04-28 10:43:04 回复(0)
答案是C自己百度去
发表于 2017-06-19 11:15:17 回复(0)
C
发表于 2017-01-07 00:03:24 回复(0)
D
发表于 2016-12-30 11:10:35 回复(1)
d
发表于 2016-12-26 01:15:18 回复(1)