📜  D编程-异常处理(1)

📅  最后修改于: 2023-12-03 15:00:33.740000             🧑  作者: Mango

D编程-异常处理

在D编程中,异常处理是一种处理程序错误和异常的方式。当程序出现异常时,异常处理会捕获并处理异常,以便程序可以正常执行。

在D编程中,异常处理通过try-catch块来实现。try块包含可能引发异常的代码,catch块用于处理异常。

以下是一个简单的示例:

void main()
{
    try
    {
        int x = 0;
        int y = 10 / x; // 会引发除零异常
    }
    catch (Throwable t)
    {
        writeln("An exception occurred: ", t.msg);
    }
}

在上面的示例中,try块中的代码会引发除零异常。catch块会捕获该异常,并输出异常信息。

异常类型

在D编程中,所有异常都是派生自Throwable类的,Throwable类具有以下属性和方法:

  • string msg:异常消息
  • string toString():返回异常消息

以下是一个抛出自定义异常的示例:

class MyException : Throwable
{
    this(string msg)
    {
        super(msg);
    }
}

void main()
{
    try
    {
        throw new MyException("Something went wrong");
    }
    catch (MyException e)
    {
        writeln("An exception occurred: ", e.msg);
    }
}

在上面的示例中,我们创建了一个MyException类,并使用throw语句抛出了该异常。catch块捕获该异常,并输出异常消息。

finally块

try-catch块中,还可以添加一个可选的finally块。finally块中的代码会在try-catch块执行完毕后始终执行,无论是否发生异常。

以下是一个使用finally块的示例:

void main()
{
    try
    {
        int x = 0;
        int y = 10 / x; // 会引发除零异常
    }
    catch (Throwable t)
    {
        writeln("An exception occurred: ", t.msg);
    }
    finally
    {
        writeln("Execution finished");
    }
}

在上面的示例中,finally块中的代码会在try-catch块执行完毕后执行,无论是否发生异常。

总结

异常处理是一种处理程序错误和异常的方式,在D编程中使用try-catch块来实现。异常可以派生自Throwable类,可以添加可选的finally块来执行清理操作。