首页 后端开发 php教程 PHP的异常处理类Exception的使用及说明_PHP

PHP的异常处理类Exception的使用及说明_PHP

Jun 01, 2016 pm 12:11 PM
exception

1、首先php5提供了基本的异常处理类,可直接使用
复制代码 代码如下:
class Exception
{
protected $message = 'Unknown exception'; // 异常信息
protected $code = 0; // 用户自定义异常代码
protected $file; // 发生异常的文件名
protected $line; // 发生异常的代码行号
function __construct($message = null, $code = 0);
final function getMessage(); // 返回异常信息
final function getCode(); // 返回异常代码
final function getFile(); // 返回发生异常的文件名
final function getLine(); // 返回发生异常的代码行号
final function getTrace(); // backtrace() 数组
final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
/* 可重载的方法 */
function __toString(); // 可输出的字符串
}
?>

简单的使用如下:(通过异常,抛出错误信息)
复制代码 代码如下:
try {
$error = 'my error!';
throw new Exception($error)
} catch (Exception $e) {
echo $e->getMessage();
}

2、我们可以扩展此类,方便我们的使用
复制代码 代码如下:
class MyException extends Exception
{
// 重定义构造器使 message 变为必须被指定的属性
public function __construct($message, $code = 0) {
// 自定义的代码
// 确保所有变量都被正确赋值
parent::__construct($message, $code);
}
// 自定义字符串输出的样式
public function __toString() {
return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
}
public function customFunction() {
echo "A Custom function for this type of exception\n";
}
}

异常处理的基本思想是代码在try代码被调用执行。如果try码块出现错误,我们可以执行一个抛出异常的处理。某些编程语言,如java,,在特定情况下将自动抛出异常。在php中,异常必须手动抛出。可以使用如下方式抛出一个异常:
  Throw new Exception(‘message',code);
  Throw 关键字将触发异常处理机制,它是一个语言结构,而不是一个函数,但是必须给它传递一个值。它要求一个接受对象。在最简单的情况下,可以实例化一个内置的Exception类。
  最后,在try代码之后,必须至少给出一个catch代码块。可以将多个catch代码块与一个try代码块进行关联。如果每个catch代码块可以捕获一个不同类型的异常,可以使用多个catch代码块是有意义的。例如,如果想捕获Exception类的异常,代码如下
复制代码 代码如下:
Catch(Exception $e)
{
//handing exception
}
Catch代码捕获的对象就是导致异常并传递给throw语句的对象(被throw 语句抛出)。使用Exception 类的实例,是不错的选择。
Exception类提供了如下的内置方法:
  Getcode()   —返回传递给构造函数的代码。
  GetMessage() —返回传递给构造函数的消息。
  getFile()     —返回产生异常代码的文件的路径
  getLine()    —返回产生异常的代码所在的行。

注意:
当捕获到一个异常后,try()块里面的后续代码将不会继续执行,而是会尝试查找匹配的“catch”代码块
当抛出一个异常后,如果不进行catch处理,则会报“Uncaught exception 'Exception'”错误
复制代码 代码如下:
function test($val){
if ($val>100){
throw new Exception("提示信息:您输入的值过大");
}
}
test(111);
?>

3.当一个异常抛出后,catch语句块可以进行处理也可以不处理
以下是我用户注册功能的部分代码
复制代码 代码如下:
try{
//check forms filled in
if(!filled_out($_POST)){
throw new Exception('你还没有填写表单,请回去填写');
}
//check email address not valid
if(!check_email($email)){
throw new Exception('邮件的格式不正确');
}
//检查密度的长度是否大于6
if(strlen($passwdthrow new Exception('密度的长度应该大于6');
}
//检查两次密码是否相等
if($passwd!=$passwd1){
throw new Exception('两次密码不一样,请重新输入');
}
//检查用户名的长度是否正确
if(strlen($username)>16){
throw new Exception('用户名的长度不符,请重新输入');
}
} catch(Exception $e){
echo $e->getMessage(); //输出异常信息。
}

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Java中的ConcurrentModificationException异常的产生原因和解决方法 Java中的ConcurrentModificationException异常的产生原因和解决方法 Jun 25, 2023 am 10:33 AM

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

PHP Fatal error: Uncaught exception ‘PDOException’的解决方法 PHP Fatal error: Uncaught exception ‘PDOException’的解决方法 Jun 23, 2023 pm 12:09 PM

在PHP开发中,可能会遇到“PHPFatalerror:Uncaughtexception‘PDOException’”这样的错误,这是由于PHP操作数据库的时候出现了错误所引发的异常。如果不及时处理这个错误,就会导致程序中断或者出现无法预期的错误。那么如何解决这个问题呢?下面是一些常见的解决方法。一、检查数据库参数首先,我们需要检查连接数据库时传

Java中的UnsupportedEncodingException异常该如何处理? Java中的UnsupportedEncodingException异常该如何处理? Jun 25, 2023 am 08:02 AM

Java中的UnsupportedEncodingException异常该如何处理?在Java编程中,可能会遇到UnsupportedEncodingException异常。这个异常通常是由于编码转换不正确或编码不支持造成的。在这篇文章中,我们将介绍UnsupportedEncodingException异常的原因和如何处理它。什么是UnsupportedE

Java中的ConcurrentModificationException异常常见原因是什么? Java中的ConcurrentModificationException异常常见原因是什么? Jun 25, 2023 am 11:07 AM

Java中的ConcurrentModificationException异常常见原因是什么?当在使用Java集合框架中迭代器遍历集合的时候,有时候会抛出ConcurrentModificationException异常,这是常见的Java异常之一。那么,这个异常的产生是什么原因呢?首先,我们需要了解Java集合框架提供的迭代器是有状态的。也就是说,在遍历时

Java中的ArrayStoreException异常的解决方法 Java中的ArrayStoreException异常的解决方法 Jun 25, 2023 am 08:05 AM

在Java的开发中,我们经常会使用数组来存储一系列的数据,因为数组的便利性和性能优势。但是,在使用数组的过程中,会出现一些异常情况,其中一个常见的异常就是ArrayStoreException。当我们向数组中存储不兼容的数据类型时,就会抛出这个异常。本篇文章将介绍什么是ArrayStoreException异常、它的产生原因,以及如何解决这个异常。一、Arr

Java中的ArrayStoreException异常的常见原因是什么? Java中的ArrayStoreException异常的常见原因是什么? Jun 25, 2023 am 09:48 AM

在Java编程中,数组是一种重要的数据结构。数组可以在一个变量中存储多个值,更重要的是可以使用索引访问每个值。但是在使用数组时,可能会出现一些异常,其中之一是ArrayStoreException。本文将讨论ArrayStoreException异常的常见原因。1.类型不匹配数组在创建时必须指定元素类型。当我们试图将不兼容的数据类型存储到一个数组中时,就会抛

在Java中,Exception类和Error类之间有什么区别? 在Java中,Exception类和Error类之间有什么区别? Sep 09, 2023 pm 12:05 PM

Exception类和Error类都是java.lang.Throwable类的子类,我们可以处理运行时的异常,但不能处理错误。异常是代表运行时发生的逻辑错误的对象,使JVM进入“歧义”状态。JVM自动创建的用于代表这些运行时错误的对象被称为异常。Error是Throwable类的子类,它指示合理的应用程序不应尝试捕获的严重问题。大多数此类错误都是异常情况。如果发生异常,我们可以使用try和catch块来处理它。如果发生错误我们无法处理,程序就会终止。异常有两种类型,一种是CheckedExce

Java中的UnsupportedEncodingException异常的解决方法 Java中的UnsupportedEncodingException异常的解决方法 Jun 25, 2023 am 08:48 AM

Java中可能会出现UnsupportedEncodingException异常,主要是因为编码不被支持导致。在处理文本数据时,经常需要进行编码转换,也就是把一种编码格式的内容转换成另一种编码格式的内容。而如果进行编码转换时使用的编码类型不被支持,就会抛出UnsupportedEncodingException异常。本文将介绍该异常的解决方法。一、

See all articles