C#相当于Java的Storable是什么?
什么 C# 等同于 Java?Throwable
在 Java 中,异常类层次结构的根称为 Throwable
,而不是 。基类有两个派生类:Exception
Throwable
Exception
:对于合理的应用程序可能想要捕获的条件。
Error
:对于合理的程序不应尝试捕获的严重问题。
因此,基类包含合理的程序不应尝试捕获的问题。Throwable
什么 C# 等同于 Java?Throwable
在 Java 中,异常类层次结构的根称为 Throwable
,而不是 。基类有两个派生类:Exception
Throwable
Exception
:对于合理的应用程序可能想要捕获的条件。
Error
:对于合理的程序不应尝试捕获的严重问题。
因此,基类包含合理的程序不应尝试捕获的问题。Throwable
.Net 允许任何类的异常,但 C# 将 throw 和 catch 限制为 Exception。使用既不指定类型也不指定变量的 catch 子句来捕获非异常异常。
相关规范片段:
当 catch 子句指定类类型时,该类型必须是 System.Exception、从 System.Exception 派生的类型或将 System.Exception(或其子类)作为其有效基类的类型参数类型。
当 catch 子句同时指定类类型和标识符时,将声明给定名称和类型的异常变量。异常变量对应于作用域延伸到 catch 块上的局部变量。在执行 catch 块期间,异常变量表示当前正在处理的异常。出于明确赋值检查的目的,异常变量被视为在其整个范围内明确赋值。
除非 catch 子句包含异常变量名称,否则无法访问 catch 块中的异常对象。
既不指定异常类型也不指定异常变量名称的 catch 子句称为常规 catch 子句。try 语句只能有一个常规 catch 子句,如果存在一个子句,它必须是最后一个 catch 子句。
某些编程语言可能支持无法表示为从 System.Exception 派生的对象的异常,尽管此类异常永远不会由 C# 代码生成。可以使用一般捕获子句来捕获此类异常。因此,一般 catch 子句在语义上与指定类型 System.Exception 的子句不同,因为前者也可能捕获来自其他语言的异常。
.Net 4.0 引入了一个类似于 Java 的 Error 类的概念。虽然损坏的状态异常扩展了异常,但只有具有 HandleProcessCorruptedStateExceptionsAttribute 的方法才能捕获 CSE。