php 子类分类 json,class-PHP内置了哪些Exception子类?

PHP 5有两个内置的异常

ErrorException

ErrorException

PHP中的库具有自己的内置异常

json_encode()在特定情况下,即,由于逻辑原因无法执行某项操作时,DOM操作会引发异常。

json_encode()他的类用于在intl函数内部发生错误时生成异常。 仅在启用intl.use_exceptions时才会生成此类异常。

json_encode()与Phar班一起工作时抛出

json_encode()使用反射类时抛出

SPL包含一些自己的内置异常:

json_encode()回调是指未定义的函数或缺少某些参数的情况。

json_encode()回调是指未定义的方法或缺少某些参数的情况。

json_encode()值不符合定义的有效数据域。

json_encode()传递的参数无效。

json_encode()参数超出了允许的长度(用于字符串,数组,文件大小等)。

json_encode()程序逻辑中发生一般错误。

json_encode()请求了非法索引。

json_encode()请求了非法索引。 这表示应在编译时检测到的错误。

json_encode()将元素添加到完整的容器中。

json_encode()指示程序执行期间的范围错误。 通常,这意味着除下溢/上溢外还存在算术错误。

json_encode()发生仅在运行时才能发现的错误。

json_encode()对空容器执行无效操作,例如删除元素。

json_encode()接收到意外值(即,由于方法调用返回值的结果)。

PHP 7引入了新的异常,包括可捕获的错误。 新的例外包括:

json_encode()是可以通过PHP 7中的throw语句抛出的任何对象的基本接口,包括Error和Exception。

json_encode()是所有内部PHP错误的基类。

通过assert()进行的声明失败时,将引发json_encode()。

解析PHP代码时发生错误时(例如,调用eval()时),将引发json_encode()。

json_encode()在三种情况下可能会引发TypeError。 第一种是传递给函数的参数类型与其对应的声明参数类型不匹配的情况。 第二个是从函数返回的值与声明的函数返回类型不匹配的地方。 第三个是将无效数量的参数传递给内置PHP函数(仅严格模式)的地方。

在执行数学运算时发生错误时,将抛出json_encode()。 在PHP 7.0中,这些错误包括尝试执行负数的位移位,以及对intdiv()的任何调用,这将导致值超出整数的可能范围。

尝试将数字除以零时将抛出json_encode()。

如果将很少的参数传递给用户定义的函数或方法,则会抛出json_encode()。

PHP 7.3引入了JSON异常:

json_encode()和json_decode()遇到错误时,将抛出json_encode()。

下面的图表演示了PHP 7中引入的新层次结构:

\Throwable

├── \Exception (implements \Throwable)

| |── \DOMException (extends \Exception)

| ├── \IntlException (extends \Exception)

| ├── \JsonException (extends \Exception)

| |── \PharException (extends \Exception)

| |── \ReflectionException (extends \Exception)

│ ├── \LogicException (extends \Exception)

│ │ ├── \BadFunctionCallException (extends \LogicException)

│ │ │ └── \BadMethodCallException (extends \BadFunctionCallException)

│ │ ├── \DomainException (extends \LogicException)

│ │ ├── \InvalidArgumentException (extends \LogicException)

│ │ ├── \LengthException (extends \LogicException)

│ │ └── \OutOfRangeException (extends \LogicException)

│ └── \RuntimeException (extends \Exception)

│ ├── \OutOfBoundsException (extends \RuntimeException)

│ ├── \OverflowException (extends \RuntimeException)

│ ├── \RangeException (extends \RuntimeException)

│ ├── \UnderflowException (extends \RuntimeException)

│ └── \UnexpectedValueException (extends \RuntimeException)

└── \Error (implements \Throwable)

├── \AssertionError (extends \Error)

├── \ParseError (extends \Error)

└── \TypeError (extends \Error)

└── \ArgumentCountError (extends \TypeError)

└── \ArithmeticError (extends \Error)

└── \DivisionByZeroError extends \ArithmeticError)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。在Java中,可以使用许多第三方库来处理JSON数据。常见的有Jackson、Gson、Fastjson等。接下来我以Jackson为例,演示如何使用Java代码实现JSON的添加、删除和更新操作。 首先,需要引入Jackson的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.12.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.12.5</version> </dependency> ``` 接下来,我们可以定义一个简单的JSON字符串作为示例数据: ``` String jsonString = "{\"name\":\"张三\",\"age\":20,\"gender\":\"男\",\"hobby\":[\"篮球\",\"游泳\"]}"; ``` 将jsonString转化为Java对象,可以使用以下代码: ``` ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(jsonString); ``` 其中,ObjectMapper是Jackson中最常用的类之一,用于将Java对象序列化为JSON字符串或将JSON字符串反序列化为Java对象。JsonNode则表示JSON中的一个节点,可以表示一个对象、一个数组或一个值。 添加操作可以使用以下代码: ``` ObjectNode objectNode = (ObjectNode) jsonNode; objectNode.put("address", "北京市海淀区"); ``` 其中,ObjectNode是JsonNode的子类,表示JSON中的一个对象。put方法可以向对象中添加一个键值对。 删除操作可以使用以下代码: ``` ObjectNode objectNode = (ObjectNode) jsonNode; objectNode.remove("hobby"); ``` 其中,remove方法可以删除对象中指定的键值对。 更新操作可以使用以下代码: ``` ObjectNode objectNode = (ObjectNode) jsonNode; objectNode.put("age", 21); ``` 其中,put方法可以更新对象中指定键的值。 最后,将更新后的JSON序列化为字符串,可以使用以下代码: ``` String updatedJsonString = objectMapper.writeValueAsString(jsonNode); System.out.println(updatedJsonString); ``` 完整的代码如下: ``` import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; public class JsonUtils { public static void main(String[] args) throws Exception { String jsonString = "{\"name\":\"张三\",\"age\":20,\"gender\":\"男\",\"hobby\":[\"篮球\",\"游泳\"]}"; ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(jsonString); // 添加操作 ObjectNode objectNode = (ObjectNode) jsonNode; objectNode.put("address", "北京市海淀区"); // 删除操作 objectNode.remove("hobby"); // 更新操作 objectNode.put("age", 21); String updatedJsonString = objectMapper.writeValueAsString(jsonNode); System.out.println(updatedJsonString); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值