我正在观看关于D的三个酷事 - D编程语言的案例,它基本上说不要使用try/catch/finally(关于38mark.39:30说你不想看它产生的try/catch),它使用范围(失败)更好(也退出和成功).
我的问题是当你想要检查异常并根据例外做一个动作时会发生什么,例如警告用户磁盘没有空间或将URL标记为404(.NET webclient/webrequest抛出此异常)或稍后重试发生500错误代码.我该怎么办?我必须使用try/catch还是有另一种方式?
Jon*_*vis 17
scope语句允许您在退出声明它们的作用域时运行代码.scope(success)正常退出作用域时运行.scope(failure)由于抛出异常而退出作用域时运行.scope(exit)无论您如何退出范围,退出范围时都会运行.它们都不会让您访问任何抛出的异常.它们只允许您在退出当前作用域时根据退出该作用域的方式运行代码.
所以,基本上,在你会捕获异常的情况下,做一些事情,然后再次抛出它而不关心异常实际是什么,scope(failure)可以用来代替catch,而scope(exit)不是用来代替finally.但是,如果您确实需要异常,那么您将不得不使用try- catch块来捕获它.scope只是不允许您访问异常,因此scope如果您想要实际执行抛出的异常,则不能使用语句.但是,scope当您不关心实际上的异常时,效果很好.