php接口和异常处理

php的错误和异常处理机制 php的错误和异常处理机制。1、php错误分类;2、error_reporting、display_errors、log_errors、log_errors_max_len、error_log等配置;3、set_error_handler的使用;4、set_exception_handler 的使用;5、用trigger_error触发错误;6、捕获异常try/catch/finally的使用方式 阅读详情

接着昨天的部分,php面向对象也提供了接口这个东西,单从接口这一块来说php和java基本上没区别,不论java还是php接口从一定程度上弥补了类单继承的不足,在不破坏类层级关系的前提下减小了耦合度.废话不说了来看一下java和php的相同点和不同点吧

1.php的接口里面不允许出现静态变量但是可以有常量,php的类内部常量用const来声明,java里允许有静态常量

2.java可以使用final来声明一个常量,但是php使用的是const

下面这些地方java和php一致

3.如果类用final修饰则该类不能被继承,如果用来声明方法表示方法不能被重写

4.php的类也可以同时继承一个类,并实现多个接口;同样的接口也可以继承接口

差不多也就这些,下面来继续研究php的错误处理和异常处理

说句真心话php的错误和异常处理真不怎地,比起java来简直就是弱爆了,个人感觉php的这一块还不成熟

一   php的错误处理

(1) 使用die()来处理,就像下面这样

<?php
  function main(){
    if(!file_exists("01.txt")){
      die("文件不存在");
    }else{
      $f=fopen("01.txt","r");
      fclose($f);
    }
  }
  main();
?>

当然还有其他的写法,大家自己去写就好。

(2)顶层错误处理器

这种方式一般就是用于改写php的错误处理机制,就是说我们自己可以自己定义一个function,之后使用set_error_handler("自己的处理器",错误级别),这里一般不要使用E_USER的这种错误级别

(3)错误触发器,这种情况一般用于自定义的错误

定义和用法

trigger_error() 函数创建用户定义的错误消息。

trigger_error() 用于在用户指定的条件下触发一个错误消息。它与内建的错误处理器一同使用,也可以与由 set_error_handler() 函数创建的用户自定义函数使用。同样的set_error_handler()也有2个参数第一个是处理器名称,第二个是级别,这里级别有这么几种

  • E_USER_ERROR
  • E_USER_WARNING
  • E_USER_NOTICE
但是有时为了项目运维的方便,还需要记录错误日志,语法如下

error_log(error,type,destination,headers)
error就是错误信息,一般是字符串,类型有这么几种

  • 0 - 默认。根据在 php.ini 文件中的 error_log 配置,错误被发送到服务器日志系统或文件。
  • 1 - 错误被发送到 destination 参数中的地址。只有该类型使用 headers 参数。
  • 2 - 通过 PHP debugging 连接来发送错误。该选项只在 PHP 3 中可用。
  • 3 - 错误发送到文件目标字符串。
一般情况就使用3这种,第三个参数就是错误日志的位置可以是网络地址或是磁盘路径,错误处理差不多就这些


二  异常处理

php里这一块和java差别有点大,最重要的一点就是php里的try...catch后面不能有finally,语法如下

try{

}catch(Exception $e){

  echo  $e.getMessage();

}

php也像java可以声明异常,代码大致如下

<?php
//create function with an exception
function checkNum($number)
 {
 if($number>1)
  {
  throw new Exception("Value must be 1 or below");
  }
 return true;
 }

//trigger exception
checkNum(2);
?>


异常的机制大致和java类似,如果声明了异常但是调用的地方没有捕获,异常也不会出现,php也可以自定义异常如下所示


<?php
class customException extends Exception
 {
 public function errorMessage()
  {
  //error message
  $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
  .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';
  return $errorMsg;
  }
 }

$email = "someone@example...com";

try
 {
 //check if 
 if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
  {
  //throw exception if email is not valid
  throw new customException($email);
  }
 }

catch (customException $e)
 {
 //display custom message
 echo $e->errorMessage();
 }
?>

还有一种就是异常顶级处理器set_exception_handler,用法类似这种

<?php
    set_exception_handler( 'exc_handler' );
    function exc_handler($exception) {
        echo "Uncaught exception: " , $exception->getMessage(), "\n";
    }
    function errorone() {
        throw new Exception("Test 1");
    }
    function errortwo() {
        throw new Exception("Test 2");
    }
    function test() {
        errorone();
        errortwo();
    }
    test();
    test();
?>

有一些情况php无法捕获到异常,例如5/0原因是php没有声明这些异常,算是php的缺陷吧。综合php,java,asp.net来看java异常处理做的还是比较出色的。


PHP:预定义接口和类之Throwable 阅读详情

相关推荐

深入浅出横向联邦学习、纵向联邦学习、联邦迁移学习

深入浅出解析横向联邦学习(Horizontal Federated Learning)、纵向联邦学习(Vertical Federated Learning)和联邦迁移学习(Federated Transfer Learning)有多个机构(比如几家不同的银行,或者几家医院)都拥有一些数据,他们希望联合起来训练一个更强大的机器学习模型,但出于隐私保护或法规要求,他们不能直接把数据共享出来。联邦学习就是为了解决这个问题而提出的。它的核心思想是“数据不动模型动”,即数据保留在本地,参与方共同训练模型。

frostmelody 全网同名,大家多多关注呀~ 持续分享优质内容! 2461

PHP/TP5 接口设计中异常处理

PHP提供 Exception 类来处理异常 new Exception('错误信息(默认为空)','错误代码(默认0)','异常链中前一个异常') 然后可以通过 e -> getMessage() 获取异常信息 e -> getCode() 获取异常错误码 处理异常 try { //可能抛出异常代码 ...

weixin_33795806的博客 495

基于Java+Maven+Testng+RestAssured+Allure+Jenkins搭建一个接口自动化框架

2、有一个提取表达式列,通过编写每个接口的JSON提取表达式,后边在解析Excel时,对接口执行后的响应数据用该表达式提取出来,保存到环境变量,如果某些接口需要前置接口的响应数据,我们就可以从环境变量中获取该数据出来,从而解决了接口关联的问题。1、在之前介绍过全局配置类Contants中添加一个控制台日志开关控制权限,如果选择为false,则控制台不输出日志,将日志输出到allure报表,选择为true,则在控制台输出日志,不输出到allure报表。

专注于技术分享的博主 1183

thinkphp 6 异常处理接管处理错误日志操作写入数据库处理各项错误

如果在项目中 想获取用户操作日志 不限于 success、error 等其他错误异常如:控制器 admin 不存在方法不存在 app\adminapi\controller\admin\LoginController->login()请求方式错误validate 验证错误手动抛出的异常请求异常。

chinanes的博客 2157

用RFSoC ZU47DR搭建软件无线电原型:从零配置Vivado到生成第一个射频信号

本文详细介绍了如何使用Xilinx RFSoC ZU47DR开发板搭建软件无线电原型系统,从Vivado环境配置到生成首个射频信号的全流程。通过整合ARM处理器、FPGA逻辑和高速ADC/DAC,该平台为通信算法验证提供了高效解决方案,特别适合SDR开发者和通信工程师快速实现原型设计。

weixin_26763955的博客 590

电力工程师必看:GOOSE/SV/MMS三协议在智能变电站中的分工与联动实例

本文深入解析了智能变电站中GOOSE、SV、MMS三大核心通信协议的分工与协同机制。GOOSE协议作为过程层的“闪电信使”,负责毫秒级传输跳闸命令等事件信息;SV协议则传输精确同步的电流电压采样值流;而MMS协议作为站控层的“管理语言”,实现设备监控与数据管理。三者基于IEC 61850标准,在过程层、间隔层和站控层之间高效联动,共同构建了智能变电站稳定可靠的通信骨架。

jj890的博客 365

php的异常和错误的接管

1. 接管错误: //自定义错误接管 function userErrorHandler($errno, $errstr, $errfile, $errline){   if (!(error_reporting() & $errno)) {    //错误码未包含在错误报告中 return; } switch ($errno) { ...

weixin_30411239的博客 250

《一》:LBE,VR 大空间系列——场景环境需求解析

当前,大量 VR 体验活动在室内场地开展。因此,对于场地照明有特定要求:除天花板外,场地的所有表面均需有照明覆盖。这是为了保证玩家无论处于场地的哪个位置,地面与墙面都不会出现明显的影子。场地内不建议安装射灯或高强度的点光源,若已安装此类灯具,需使用柔光板进行遮盖。此外,要避免在阳光下使用 VR 设备台。参考图(请忽略其中Maker标签)

unitygroup的博客 944

PHP异常接管错误输出,异常处理 · thinkphp5.1 · 看云

## **异常显示**在调试模式下,系统默认展示的异常页面:![](https://box.kancloud.cn/cc2522ef8a6b4c94f2ca1421619e87ca_736x642.png)## **异常忽略**>[danger] 本着严谨的原则,`5.0`版本开始默认情况下会对任何错误(包括警告错误)抛出异常,如果不希望如此严谨的抛出异常,可以使用下面方法设置。~~~// ...

weixin_31586247的博客 1030

5、快速入门

点击启动实例按钮,并设计一个business key,每个实例会有一个business key, 业务主键,也相当于一个流程实例唯一key,一般会与一次业务强相关,比如一个订单号 ,此处取为shopping_1;付款程序完成后会流转到物流发货任务,此时java工程的相应订阅会收到任务,并进入断点,且读到到toWhere变量。单击shopping可以进入实时流程图的执行图,此时流程流转到第一个任务,需要业务系统完成此任务,并通知引擎。添加类,分别订阅流程中的加入购物车任务和物流发货任务。

leyoliu的博客 3501

ESP8266-Arduino网络编程实例-异步TCP客户端

本次实例将使用ESPAsyncTCP库实现一个简单的客户端。

视觉与物联智能 1740

php接口异常,php接口和异常处理

接着昨天的部分,php面向对象也提供了接口这个东西,单从接口这一块来说php和java基本上没区别,不论java还是php接口从一定程度上弥补了类单继承的不足,在不破坏类层级关系的前提下减小了耦合度.废话不说了来看一下java和php的相同点和不同点吧1.php的接口里面不允许出现静态变量但是可以有常量,php的类内部常量用const来声明,java里允许有静态常量2.java可以使用final来...

weixin_33228847的博客 469

R语言coxph函数对加权数据集进行竞争风险模型拟合、regplot包的regplot函数可视化竞争风险回归模型的列线图nomogram、计算特定病例的事件概率(控制了竞争风险的累计事件概率)

R语言coxph函数对加权数据集进行竞争风险模型拟合、regplot包的regplot函数可视化竞争风险回归模型的列线图nomogram、计算特定病例的事件概率(控制了竞争风险的累计事件概率)

statistics+insight+vista+power 358

PHP编程之旅----接口、异常处理

<?php /* * 关于接口--定义规范的方法、常量属性 * 接口的定义: * interface name{ 常量 属性 public 方法 } 接口的实现: class className implements interface1,interface2{ } 一个接口可以继承其他的接口,但不能继承方法 接口的继承: interface1 exten

Ethon520 987

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

PHP编程进阶:多态、接口与异常处理

在PHP编程的进阶之路上,多态、接口与异常处理无疑是提升代码质量、增强程序健壮性的关键要素。本指南将带您深入探索这些高级编程特性,从多态的灵活运用到接口的设计实现,再到异常处理的精细管理,全方位提升您的PHP编程技能。您将学习如何通过方法重写和方法重载实现多态,理解私有属性在继承中的特殊规则,掌握staticfinal和abstract等修饰符在方法中的妙用,以及类常量的定义与应用。同时,接口作为PHP中实现多态性的重要手段,我们将详细阐述其定义、多重实现及在代码设计中的作用。

你华还是你华 594

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

PHP接口统一响应与异常处理实践

在PHP项目中,接口数量增加后,常见问题往往不是功能实现,而是返回格式不一致。有的把错误写进message,有的直接输出字符串,前端和第三方系统因此需要编写兼容逻辑。更稳妥的做法,是先定义统一响应结构,固定包含success、code、message、data和timestamp字段。参数错误、权限不足或第三方服务异常时,则返回明确的业务状态码。涉及第三方平台时,可以保存响应摘要,但不要记录密码、Token和完整隐私数据。统一响应不是形式上的美化,而是降低联调成本、提高维护和排查效率的基础。

2601_96636891的博客 210

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

php接口异常,API接口中的异常处理

# API接口中的异常处理>[success]在API接口的开发过程中,使用TP自带的异常处理机制,可能并不能满足实际需求。>TP默认是直接抛出异常,而API接口通常返回的是json数据格式。所以需要对异常类进行重写。## 重写异常处理的`render`方法### 重写异常处理类~~~phpnamespace app\common\lib\exception;use think\ex...

weixin_36248959的博客 897

php接口异常,ThinkPHP5接口异常处理

想必不少小伙伴都遇到过在使用接口开发的时候有时候一个变量、方法或者控制器不存在访问的时候就会出现如下错误提示对于接口开发来说这样是不友好的,有时还会使前端页面直接崩溃。我们可以单独写一个异常类来处理接口下关的异步处理1、在application/common/lib下创建一个exception文件夹再在里面创建一个API接口异步处理文件ApiHandleException.php(如果没有comm...

weixin_33266645的博客 881

Genkit 接入 Ollama 完整指南:3 步用本地大模型跑通 Pokémon 本地 RAG

数据不能出内网,也想做本地 RAG 智能问答?Genkit 接入 Ollama 插件就能做到:文档嵌入、向量检索、答案生成全部跑在本机。仓库里的[示例应用](https://link.gitcode.com/i/89127b51d1ce0f768fffc30e2aae6f6e) 用 `nomic-embed-text` 嵌入 + phi3.5 生成,把一条完整的检索增强生成(RAG)链路压缩进不到

gitblog_02541的博客 437

php接口异常,PHP/TP5 接口设计中异常处理

PHP提供 Exception 类来处理异常new Exception('错误信息(默认为空)','错误代码(默认0)','异常链中前一个异常')然后可以通过e ->getMessage() 获取异常信息e-> getCode() 获取异常错误码处理异常try{//可能抛出异常代码throw new Exception("Error Processing Request", 1);}c...

weixin_27064845的博客 485

app请求php接口超时,app接口开发之异常处理

摘要:无论开发接口还是开发其他项目,异常处理是必须的,虽然php有自带的异常处理机制,但如过每次处理都要try{}catch{}这会非常麻烦。好在php提供了 set_exception_handler 让开发者可以自定义异常处理。 无论开发接口还是开发其他项目,异常处理是必须的,虽然php有自带的异常处理机制,但如过每次处理都要try{}catch{}这会非常麻烦。好在php提供了 set...

weixin_33169898的博客 486

PHP 调用第三方 API 实战:从 cURL 请求到异常处理与接口封装

PHP 调用第三方 API 的核心并不只是发送一个 HTTP 请求,而是建立一套相对完整的请求处理机制。请求超时状态码判断异常捕获JSON 解析身份验证敏感信息保护日志脱敏有限重试幂等控制在小型项目中,可以直接使用 cURL 封装请求类;在较复杂的项目中,也可以使用 Guzzle 等成熟 HTTP 客户端,并结合配置管理、日志系统和统一异常处理机制。无论采用哪种方案,都应优先保证接口调用过程可追踪、可控制、可排查,同时遵守第三方平台规则和数据安全要求。

2601_96132570的博客 251

PHP异常处理__Throwable

在 PHP 里,Throwable是一个极为关键的接口,自 PHP 7 起被引入。它为错误和异常处理构建了一个统一的框架。下面会详细介绍Throwable的相关内容。

胡西风的博客 702

PHP语言参考-命名空间/异常处理/引用/预定义变量/预定义异常/预定义接口

一、命名空间 * 命名空间的作用 1、用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 2、为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。 namespace my\name; // 参考 "定义命名空间" 小节 class MyClass {} function myfunct...

weixin_30325793的博客 101
上一篇: java和php面向对象的一些比较
下一篇: php使用http请求头实现文件下载
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值