Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[CodeIgniter4]-错误处理

[CodeIgniter4]-错误处理

作者头像
landv
发布于 2020-03-05 08:23:14
发布于 2020-03-05 08:23:14
2.5K00
代码可运行
举报
文章被收录于专栏:landvlandv
运行总次数:0
代码可运行

错误处理

CodeIgniter 通过 SPL collection 和一些框架内自定义异常来生成系统错误报告。错误处理的行为取决于你部署环境的设置,当一个错误或异常被抛出时,只要应用不是在 production 环境下运行,就会默认展示出详细的错误报告。在这种情况下,应为用户显示一个更为通用的信息来保证最佳的用户体验。

  • 使用异常处理
  • 配置
  • 自定义异常
    • PageNotFoundException
    • ConfigException
    • UnknownFileException
    • UnknownClassException
    • UnknownMethodException
    • UserInputException
    • DatabaseException

使用异常处理

本节为新手程序员或没有多少异常处理使用经验的开发人员做一个简单概述。

异常处理是在异常被”抛出”的时候产生的事件。它会暂停当前脚本的执行,并将捕获到的异常发送到错误处理程序后显示适当的错误提示页

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
throw new \Exception("Some message goes here");

如果你调用了一个可能会产生异常的方法,你可以使用 try/catch block 去捕获异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try {
        $user = $userModel->find($id);
}
catch (\Exception $e)
{
        die($e->getMessage());
}

如果 $userModel 抛出了一个异常,那么它就会被捕获,并执行 catch 代码块内的语句。在这个样例中,脚本终止并输出了 UserModel 定义的错误信息。

在这个例子中,我们可以捕捉任意类型的异常。如果我们仅仅想要监视特定类型的异常,比如 UnknownFileException,我们就可以把它在 catch 参数中指定出来。这样一来,其它异常和非监视类型子类的异常都会被传递给错误处理程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
catch (\CodeIgniter\UnknownFileException $e)
{
        // do something here...
}

这便于你自己进行错误处理或是在脚本结束前做好清理工作。如果你希望错误处理程序正常运行,可以在 catch 语句块中再抛出一个新的异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
catch (\CodeIgniter\UnknownFileException $e)
{
        // do something here...

        throw new \RuntimeException($e->getMessage(), $e->getCode(), $e);
}

配置

默认情况下,CodeIgniter 将在 development 和 testing 环境中展示所有的错误,而在 production 环境中不展示任何错误。你可以在主 index.php 文件的顶部找到环境配置部分来更改此设置。

重要

如果发生错误,禁用错误报告将不会阻止日志的写入。

自定义异常

下列是可用的自定义异常:

PageNotFoundException

这是用来声明 404 ,页面无法找到的错误。当异常被抛出时,系统将显示后面的错误模板 /application/views/errors/html/error_404.php。你应为你的站点自定义所有错误视图。如果在 Config/Routes.php 中,你指定了404 的重写规则,那么它将代替标准的 404 页来被调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (! $page = $pageModel->find($id))
{
        throw new \CodeIgniter\PageNotFoundException();
}

你可以通过异常传递消息,它将在 404 页默认消息位置被展示。

ConfigException

当配置文件中的值无效或 class 类不是正确类型等情况时,请使用此异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
throw new \CodeIgniter\ConfigException();

它将 HTTP 状态码置为 500,退出状态码被置为 3.

UnknownFileException

在文件没有被找到时,请使用此异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
throw new \CodeIgniter\UnknownFileException();

它将 HTTP 状态码置为 500,退出状态码被置为 4.

UnknownClassException

当一个类没有被找到时,请使用此异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
throw new \CodeIgniter\UnknownClassException($className);

它将 HTTP 状态码置为 500,退出状态码被置为 5.

UnknownMethodException

当一个类的方法不存在时,请使用此异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
throw new \CodeIgniter\UnknownMethodException();

它将 HTTP 状态码置为 500,退出状态码被置为 6.

UserInputException

当用户的输入无效时,请使用此异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
throw new \CodeIgniter\UserInputException();

它将 HTTP 状态码置为 500,退出状态码被置为 7.

DatabaseException

当产生如连接不能建立或连接临时丢失的数据库错误时,请使用此异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
throw new \CodeIgniter\DatabaseException();

它将 HTTP 状态码置为 500,退出状态码被置为 8.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP错误异常处理详解
异常处理(又称为错误处理)功能提供了处理程序运行时出现的错误或异常情况的方法。
黄规速
2022/04/14
2.1K0
理解Laravel中的异常处理
异常处理是Web应用程序开发的一个关键方面,它确保应用程序可以优雅地处理意外错误并为用户提供有意义的响应。Laravel提供了一个强大的异常处理系统,允许您有效地管理错误。在本文中,我们将探索Laravel中异常处理的基本原理,涵盖关键概念。
Tinywan
2024/06/18
3940
理解Laravel中的异常处理
PHP 中的错误处理与异常捕获
在开发任何应用时,错误是不可避免的。无论是由于程序逻辑错误、数据库故障、外部接口问题,还是用户输入不符合预期,错误都会影响应用的正常运行和用户体验。在 PHP 中,处理这些错误的方式至关重要,它直接关系到系统的健壮性、可维护性和可调试性。
繁依Fanyi
2025/01/22
4460
Laravel Exceptions——异常与错误处理
本文 GitBook 地址:https://legacy.gitbook.com/book/leoyang90/laravel-source-analysis/details
码农编程进阶笔记
2021/07/20
2.1K0
Laravel Exceptions——异常与错误处理
ASP.NET Core 错误处理(Handle Errors)
链接:cnblogs.com/xiaoxiaotank/p/15586706.html
郑子铭
2021/12/01
2.2K0
ASP.NET Core 错误处理(Handle Errors)
PHP中常见的错误与异常处理总结大全
前言 当我们开发程序时,程序出现问题是很常见的,当出现了异常与错误我们该如何处理呢?本文将详细给大家介绍PHP错误与异常处理的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 一、PHP错误处理 1.语法错误
用户2323866
2021/07/01
7190
Webman实战教程:Exception异常插件如何解决开发中的异常问题
是程序在运行中出现不符合预期的情况及与正常流程不同的状况。一种不正常的情况,按照正常逻辑本不该出的错误,但仍然会出现的错误,这是属于逻辑和业务流程的错误,而不是编译或者语法上的错误。
Tinywan
2023/10/22
6970
Webman实战教程:Exception异常插件如何解决开发中的异常问题
【Laravel系列7.2】错误与异常处理
在学习完 Laravel 中的日志处理模块之后,接下来马上就进入到错误和异常的学习中。其实通过之前 PHP 基础相关的学习,我们已经了解到 PHP7 中的大部分错误都已经可以通过异常来进行处理了,而我们的 Laravel 框架,基本全是通过异常来进行处理的。
硬核项目经理
2023/03/03
3K0
【Laravel系列7.2】错误与异常处理
PHP 错误和异常处理(下)
上篇我们讲了 PHP 中的错误报告和捕获,今天,我们来看看 PHP 程序中的异常处理。
学院君
2020/07/24
1.1K0
PHP 错误和异常处理(下)
PHP错误处理和调试(一)
当PHP脚本出现错误时,默认情况下,PHP会在浏览器上输出错误信息。这种方式对于开发环境很有用,但在生产环境中,最好将错误信息记录在日志文件中,而不是在浏览器上输出。
堕落飞鸟
2023/04/27
5060
Spring | 如何在项目中优雅的处理异常 - 全局异常处理以及自定义异常处理
在快速迭代和持续交付的今天,软件的健壮性、可靠性和用户体验已经成为区别成功与否的关键因素。特别是在Spring框架中,由于其广泛的应用和丰富的功能,如何优雅地处理异常就显得尤为重要。本文旨在探讨在Spring中如何更加高效、准确和优雅地处理异常,帮助开发者更好地构建和维护Spring应用。
kfaino
2023/09/26
4.1K0
Spring | 如何在项目中优雅的处理异常 - 全局异常处理以及自定义异常处理
「IM系列」WebSocket教程:响应格式规范与异常处理
PHP中的异常的独特性,即PHP中的异常不同于主流语言C++、java中的异常。在Java中,异常是唯一的错误报告方式,而在PHP中却不是这样,而是把所有不正常的情况都视作了错误进行处理。这两种语言对异常和错误的界定存在分歧。什么是异常什么是错误,两种语言的设计者存在不同的观点。
Tinywan
2023/12/04
4190
「IM系列」WebSocket教程:响应格式规范与异常处理
【译】现代化的PHP开发--异常Exception
自PHP 5发布以来,异常(Exception)已作为面向对象的编程语言功能添加到PHP。根据定义,异常是程序执行期间的异常事件。在PHP中,Exception只是一个对象(Exception类的实例)。当发生异常时,PHP将暂停当前的执行流程并寻找一个处理程序,然后它将根据处理程序的代码继续执行。如果未找到任何处理程序,则将发出PHP致命错误,并显示“未捕获的异常...”消息,程序将终止。
Lemon黄
2019/10/14
1.3K0
【译】现代化的PHP开发--异常Exception
Java编程思想之通过异常处理错误
1.     异常分为被检查的异常和运行时异常,被检查的异常在编译时被强制要求检查。异常被用来错误报告和错误恢复,但很大一部分都是用作错误报告的。
用户3148059
2018/09/03
6670
Java编程思想之通过异常处理错误
编程思想 之「异常及错误处理」
在 Java 的异常及错误处理机制中,用Throwable这个类来表示可以作为异常被抛出的类。Throwable对象可以细分为两种类型(指从Throwable继承而得到的类型),分别为:
CG国斌
2018/03/22
1.5K3
编程思想 之「异常及错误处理」
php错误处理和异常处理
Error 层次结构 - Throwable (php7) - Error - ArithmeticError - DivisionByZeroError - AssertionError - CompileError - ParseError - TypeError - ArgumentCountError - Exception ... 什么是php错误? 属于php脚本自身的问题,大部分情况是由错误的语法,
友儿
2022/09/11
1.1K0
PHP 错误和异常处理(上)
在 PHP 5 中,程序错误会被划分为多种级别:https://www.php.net/manual/zh/errorfunc.constants.php,然后可以通过 error_reporting 函数设置报告的错误级别:
学院君
2020/07/24
6940
PHP 错误和异常处理(上)
重学SpringBoot系列之统一全局异常处理
答:因为用户不认识ConnectionTimeOutException类似这种异常是什么东西,但是转换为自定义异常就要求程序员对运行时异常进行一个翻译,比如:自定义异常里面应该有message字段,后端程序员应该明确的在message字段里面用面向用户的友好语言,说明服务端发生了什么。
大忽悠爱学习
2021/12/07
1.1K0
重学SpringBoot系列之统一全局异常处理
JavaScript中的错误处理机制
在写代码的时候,避免不了遇到各种各样的错误,遇到错误,BUG,我们需要尽快的解决,才能不拖累工作的进度,我们一般都会百度错误如何解决,但是遇到一些针对性错误以及百度方法不管用的情况下,就需要了解错误处理机制了。
刘亦枫
2020/03/19
2.1K0
php 抛出异常使用场景
注释:异常应该仅仅在错误情况下使用,而不应该用于在一个指定的点跳转到代码的另一个位置。
全栈程序员站长
2022/07/19
2K0
推荐阅读
相关推荐
PHP错误异常处理详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验