小编elk*_*epo的帖子

在 catch 和 finally 中抛出异常。CLR 行为与 try-catch 块

我编写了简单的 C# 控制台应用程序:

class Mystery
{
    static void Main(string[] args)
    {
        MakeMess();
    }

    private static void MakeMess()
    {
        try
        {
            System.Console.WriteLine("try");
            throw new Exception(); // let's invoke catch
        }
        catch(Exception)
        {
            System.Console.WriteLine("catch");
            throw new Exception("A");
        }
        finally
        {
            System.Console.WriteLine("finally");
            throw new Exception("B");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

控制台中给出的输出是:

尝试

抓住

未处理的异常:System.Exception: A at Mystery.Program.MakeMess() in ...

似乎 CLR 捕获了A并且根本没有调用 finally 块。

但是当我用 try-catch 块包围对 MakeMess() 的调用时:

static void Main(string[] args)
{
    try
    {
        MakeMess();
    }
    catch(Exception ex)
    {
        System.Console.WriteLine("Main caught …
Run Code Online (Sandbox Code Playgroud)

.net c# clr exception try-catch

5
推荐指数
1
解决办法
1676
查看次数

在NULL指针上调用delete或delete []

在调用deletedelete []之前总是省略NULL指针检查是否安全,特别是在编写跨平台代码段时?

我记得几年前(三四个)我编写的相同代码正在使用MS Windows(使用MSVCv12工具链编译)但是使用g ++编译的Linux版本(遗憾的是,我不记得g ++版本)抛出了NULL指针引用.我发现当时可能是编译器错误的信息.

我已经找到了这个SO线程,但在阅读之后我仍然不太确定它是否安全,如果是这样 - 从哪个版本的C++标准?

c++ null memory-management

1
推荐指数
1
解决办法
1068
查看次数

标签 统计

.net ×1

c# ×1

c++ ×1

clr ×1

exception ×1

memory-management ×1

null ×1

try-catch ×1