이 글은 주로 PHP7을 기반으로 한 오류 처리 및 예외 처리 방법(자세한 설명)을 공유합니다. 좋은 참고 가치가 있으며 모든 사람에게 도움이 되기를 바랍니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.
PHP7 오류 처리
PHP 7은 대부분의 오류가 보고되는 방식을 변경합니다. 기존(PHP 5) 오류 보고 메커니즘과 달리 이제 대부분의 오류는 오류 예외로 발생합니다.
이 오류 예외는 예외 예외와 마찬가지로 첫 번째 일치하는 try/catch 블록에 의해 포착될 수 있습니다. 일치하는 catch 블록이 없으면 이전에 set_Exception_handler()를 통해 등록된 예외 처리 함수를 호출하여 처리합니다. 예외 처리기가 등록되지 않은 경우 기존 방식으로 처리됩니다. 즉, 치명적인 오류로 보고됩니다.
Error 클래스는 Exception 클래스에서 상속되지 않으므로 catch(Exception e)...를 사용하여 Error를 잡을 수 없습니다. catch(Errore) { ... }를 사용하거나 예외 처리 함수(set_Exception_handler())를 등록하여 오류를 잡을 수 있습니다.
오류 계층
Throwable Error ArithmeticError pisionByZeroError AssertionError ParseError TypeError Exception ...
try { // Code that may throw an Exception or Error. } catch (Throwable $t) { // Executed only in PHP 7, will not match in PHP 5 } catch (Exception $e) { // Executed only in PHP 5, will not be reached in PHP 7 } up down 9 lubaev dot ka at gmail dot com ¶ 11 months ago php 7.1 try { // Code that may throw an Exception or ArithmeticError. } catch (ArithmeticError | Exception $e) { // pass }
PHP의 내장 예외 처리 클래스 확장(확장)
사용자는 사용자 정의 예외 처리 클래스를 사용하여 PHP의 내장 예외 처리 클래스를 확장할 수 있습니다. 다음 코드는 기본 제공 예외 처리 클래스의 어떤 속성과 메서드가 액세스 가능하고 서브클래스에서 상속되는지 보여줍니다.
예제 #1 내장된 예외 처리 클래스
<?php class Exception { protected $message = 'Unknown exception'; // 异常信息 private $string; // __toString cache protected $code = 0; // 用户自定义异常代码 protected $file; // 发生异常的文件名 protected $line; // 发生异常的代码行号 private $trace; // backtrace private $previous; // previous exception if nested exception public function __construct($message = null, $code = 0, Exception $previous = null); final private function __clone(); // Inhibits cloning of exceptions. final public function getMessage(); // 返回异常信息 final public function getCode(); // 返回异常代码 final public function getFile(); // 返回发生异常的文件名 final public function getLine(); // 返回发生异常的代码行号 final public function getTrace(); // backtrace() 数组 final public function getPrevious(); // 之前的 exception final public function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 // Overrideable public function __toString(); // 可输出的字符串 } ?> 如果使用自定义的类来扩展内置异常处理类,并且要重新定义构造函数的话,建议同时调用 parent::__construct() 来检查所有的变量是否已被赋值。当对象要输出字符串的时候,可以重载 __toString() 并自定义输出的样式。 Note: Exception 对象不能被复制。尝试对 Exception 对象复制 会导致一个 E_ERROR 级别的错误。
<?php /** * 自定义一个异常处理类 */ class MyException extends Exception { // 重定义构造器使 message 变为必须被指定的属性 public function __construct($message, $code = 0, Exception $previous = null) { // 自定义的代码 // 确保所有变量都被正确赋值 parent::__construct($message, $code, $previous); } // 自定义字符串输出的样式 public function __toString() { return __CLASS__ . ": [{$this->code}]: {$this->message}\n"; } public function customFunction() { echo "A custom function for this type of exception\n"; } } /** * 创建一个用于测试异常处理机制的类 */ class TestException { public $var; const THROW_NONE = 0; const THROW_CUSTOM = 1; const THROW_DEFAULT = 2; function __construct($avalue = self::THROW_NONE) { switch ($avalue) { case self::THROW_CUSTOM: // 抛出自定义异常 throw new MyException('1 is an invalid parameter', 5); break; case self::THROW_DEFAULT: // 抛出默认的异常 throw new Exception('2 is not allowed as a parameter', 6); break; default: // 没有异常的情况下,创建一个对象 $this->var = $avalue; break; } } }
관련 권장 사항:
PHP7 성능을 두 배로 높이는 핵심에 대한 자세한 설명
빌드 방법 php7을 위한 성능 테스트 환경
위 내용은 PHP7 오류 처리 및 예외 처리 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

在php5中,我们可以使用fsockopen()函数来检测TCP端口。这个函数可以用来打开一个网络连接和进行一些网络通信。但是在php7中,fsockopen()函数可能会遇到一些问题,例如无法打开端口、无法连接到服务器等。为了解决这个问题,我们可以使用socket_create()函数和socket_connect()函数来检测TCP端口。

解决 PHP 7.0 中插件未显示已安装问题的方法:检查插件配置并启用插件。重新启动 PHP 以应用配置更改。检查插件文件权限,确保其正确。安装丢失的依赖项,以确保插件正常运行。如果其他步骤均失败,则重建 PHP。其他可能原因包括插件版本不兼容、加载错误版本或 PHP 配置问题。

php7.0安装mongo扩展的方法:1、创建mongodb用户组和用户;2、下载mongodb源码包,并将源码包放到“/usr/local/src/”目录下;3、进入“src/”目录;4、解压源码包;5、创建mongodb文件目录;6、将文件复制到“mongodb/”目录;7、创建mongodb配置文件并修改配置即可。

php7.0安装部署的方法:1、到PHP官网下载与本机系统对应的安装版本;2、将下载的zip文件解压到指定目录;3、打开命令行窗口,在“E:\php7”目录下运行“php -v”命令即可。

PHP服务器环境常见的解决方法包括:确保已安装正确的PHP版本和已复制相关文件到模块目录。临时或永久禁用SELinux。检查并配置PHP.ini,确保已添加必要的扩展和进行正确设置。启动或重启PHP-FPM服务。检查DNS设置是否存在解析问题。

PHP8相较于PHP7在性能、新特性和语法改进、类型系统、错误处理和扩展等方面都有一些优势和改进。然而,选择使用哪个版本要根据具体的需求和项目情况来决定。详细介绍:1、性能提升,PHP8引入了Just-in-Time(JIT)编译器,可以提高代码的执行速度;2、新特性和语法改进,PHP8支持命名参数和可选参数的声明,使得函数调用更加灵活;引入了匿名类、属性的类型声明等等。

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

本地环境:redhat6.7系统。nginx1.12.1,php7.1.0,代码使用yii2框架问题:本地的web站需要用到elasticsearch服务。当php使用本地服务器搭建的elasticsearch时,本地的负载都是正常。当我使用aws的elasticsearchservice服务时,本地服务器出现负载经常过高的情况。查看nginx和php日志,发现没有异常。系统的并发连接数也不高。这时候想到我们老大给我讲的一个strace诊断工具。调试过程:查找一个php的子进程idstrace-


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제



