


Exceptions are often used to handle various types of errors encountered during normal program execution. For example, when doing database linking, you have to deal with database connection failure. Using exceptions can improve the fault tolerance of our programs, making our applications more stable and robust.
Using Exceptions
PHP5 adds an exception handling module similar to other languages. Exceptions generated in PHP code can be thrown by the throw statement and caught by the catch statement. Code that requires exception handling must be placed in a try code block to catch possible exceptions. Each try corresponds to at least one catch block. Use multiple catches to catch exceptions generated by different classes. When the try code block no longer throws an exception or no catch can be found to match the thrown exception, the PHP code will continue execution after jumping to the last catch. Of course, PHP allows exceptions to be thrown again within catch blocks.
Predefined Exceptions Exception
The Exception class is the base class of all exceptions. We can achieve the purpose of custom exceptions by deriving the Exception class. The following list lists basic information about Exception.
Exception { /* 属性 */ protected string $message ; //异常消息内容 protected int $code ; //异常代码 protected string $file ; //抛出异常的文件名 protected int $line ; //抛出异常在该文件中的行号 /* 方法 */ public construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] ) //异常 构造函数 final public string getMessage ( void ) //获取异常消息内容 final public Exception getPrevious ( void ) //返回异常链中的前一个异常 final public int getCode ( void ) //获取异常代码 final public string getFile ( void ) //获取发生异常的程序文件名称 final public int getLine ( void ) //获取发生异常的代码在文件中的行号 final public array getTrace ( void ) //获取异常追踪信息 final public string getTraceAsString ( void ) //获取字符串类型的异常追踪信息 public string toString ( void ) //将异常对象转换为字符串 final private void clone ( void ) //异常克隆 }
After understanding Exception, let’s try to extend the exception class to implement a custom exception.
function connectToDatabase() { if(!$link = mysql_connect("myhost","myuser","mypassw","mybd")) { throw new Exception("could not connect to the database."); } } try { connectToDatabase(); } catch(Exception $e) {echo $e->getMessage(); }
Here we throw an Exception type exception, catch this exception in catch, and finally print out "could not connect to the database.". Maybe you want to also display information about why the database connection failed. Next, we implement our custom information by extending the exception class.
class MyException extends Exception { protected $ErrorInfo; //构造函里处理一些逻辑,然后将一些信息传递给基类 public function construct($message=null,$code=0) { $this->ErrorInfo = '自定义错误类的错误信息'; parent::construct($message,$code); } //提供获取自定义类信息的方法 public function GetErrorInfo() { return $this->ErrorInfo; } /** * *这里还可以添加异常日志,只需在上面的构造函数里调用就可以了 * */ public function log($file) { file_put_contents($fiel,$this->toString(),FILE_APPEND); } } function connectToDatabase() { throw new MyException("ErrorMessage"); } try { connectToDatabase(); } catch(MyException $e) { echo $e->getMessage() . "\n"; echo $e->GetErrorInfo(); }
set_exception_handler Set a user-defined exception handling function
The name of the function called when an uncaught exception occurs as a parameter to set_exception_handler. This function must be defined before calling set_exception_handler(). This function accepts one parameter, which is a thrown exception object. This can be used to improve the exception logging handling mentioned above.
function ExceptionLogger($exception) { $file='ExceptionLog.log'; file_put_contents($fiel,$exception->toString(),FILE_APPEND); } set_exception_handler(ExceptionLogger);
1.3. PHP allows exceptions to be thrown again within the catch code block.
try { #code... } catch(Exception $e) { if($e->getCode() == 999) { #进行一些操作 } else { throw $e; } }
Summary
The exception function is very powerful, but it does not mean that we can abuse the exception mechanism wantonly in the project, especially the mechanism that uses the exception log in large quantities. This will greatly increase the system system Overhead reduces application performance. We can use error codes to easily manage error messages. When an error message is thrown multiple times, using error codes is a scientific choice. We can even use error codes to display error messages in multiple languages.
The above is the detailed content of Detailed explanation of the usage of php exception handling class Exception. For more information, please follow other related articles on the PHP Chinese website!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

在Java中,当多个线程同时操作一个集合对象时,有可能会发生ConcurrentModificationException异常,该异常通常发生在遍历集合时进行修改或者删除元素的操作,这会导致集合的状态出现不一致,从而抛出异常。本文将深入探讨该异常的产生原因和解决方法。一、异常产生原因通常情况下,ConcurrentModificationException异

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SublimeText3 Linux new version
SublimeText3 Linux latest version

Notepad++7.3.1
Easy-to-use and free code editor

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

Zend Studio 13.0.1
Powerful PHP integrated development environment
