×

thinkphp异常捕获

thinkphp异常捕获(python捕获异常后处理)

admin admin 发表于2023-04-06 18:52:10 浏览56 评论0

抢沙发发表评论

本文目录一览:

新人求教,请问Thinkphp 中怎么捕获异常,自己进行处理

用debug和trace,在配置中开启后就会在右下角有一个图标,点开查看错误就可以了。

希望我的回答可以帮到你,有什么问题可以追问。

set_exception_handler函数在ThinkPHP中的用法

本文实例讲述了set_exception_handler函数在ThinkPHP中的用法。分享给大家供大家参考。具体方法如下:

函数:

复制代码

代码如下:string

set_exception_handler

(

callback

$exception_handler

)

定义和用法:

set_exception_handler()

函数设置用户自定义的异常处理函数。

该函数用于创建运行时期间的用户自己的异常处理方法。

该函数会返回旧的异常处理程序,若失败,则返回

null。

语法:

set_exception_handler(exception_function)

参数

描述

error_function

必需。规定未捕获的异常发生时调用的函数。

该函数必须在调用

set_exception_handler()

函数之前定义。

这个异常处理函数需要需要一个参数,即抛出的

exception

对象。

提示和注释:

提示:在这个异常处理程序被调用后,脚本会停止执行。

同样是在看TP代码的时候发现的这个函数,就想不明白了,自己以前咋就没关心过这些东西呢?(捶胸顿足ing。。。)

继续来看一下TP是怎么实现的,呃,为啥一定要用TP呢,嗯。那好吧,一会儿我把手册的例子也搬过来。

复制代码

代码如下:public

function

appException($e)

{

halt($e-__toString());

}

set_exception_handler(array($this,"appException"));

呵呵,这个简单吧?因为我没有给出halt这个方法的实现,这样就足够了。

再看手册中的例子,

复制代码

代码如下:function

exception_handler($exception)

{

echo

"Uncaught

exception:

"

,

$exception-getMessage(),

"n";

}

set_exception_handler('exception_handler');

throw

new

Exception('Uncaught

Exception');

echo

"Not

Executedn";

其实呢,set_exception_handler就是设置了一下,当你的程序需要抛出一个异常的时候调用哪个自定义的函数。

就这么简单

注意事项:

set_exception_handler(“myException”)

不仅可以接受函数,还可以接受

类的方法(公开的静态方法

公开的非静态方法

都可以),但需要以

数组形式

传递,数组的第一值为“类名”,第二个参数为“方法名”

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

thinkphp中怎么处理上传文件

?php

//www.******* iOS-知识库

class UploadFileAction extends Action{

public function index() {

$Photo = M('Photo');

$data = $Photo-order('create_time desc')-find();

$this-assign('data', $data);

$this-display();

}

public function upload() {

if (!empty($_FILES)) {

//如果有文件上传 上传附件

$this-_upload();

}

}

// 文件上传

protected function _upload() {

import('@.ORG.UploadFile');

//导入上传类

$upload = new UploadFile();

//设置上传文件大小

$upload-maxSize = 3292200;

//设置上传文件类型

$upload-allowExts = explode(',', 'jpg,gif,png,jpeg');

//设置附件上传目录

$upload-savePath = './Uploads/';

//设置需要生成缩略图,仅对图像文件有效

$upload-thumb = true;

// 设置引用图片类库包路径

$upload-imageClassPath = '@.ORG.Image';

//设置需要生成缩略图的文件后缀

$upload-thumbPrefix = 'm_,s_'; //生产2张缩略图

//设置缩略图最大宽度

$upload-thumbMaxWidth = '400,100';

//设置缩略图最大高度

$upload-thumbMaxHeight = '400,100';

//设置上传文件规则

$upload-saveRule = 'uniqid';

//删除原图

$upload-thumbRemoveOrigin = true;

if (!$upload-upload()) {

//捕获上传异常

$this-error($upload-getErrorMsg());

} else {

//取得成功上传的文件信息

$uploadList = $upload-getUploadFileInfo();

import('@.ORG.Image');

//给m_缩略图添加水印, Image::water('原文件名','水印图片地址')

Image::water($uploadList[0]['savepath'] . 'm_' . $uploadList[0]['savename'], APP_PATH.'Tpl/Public/Images/logo.png');-thinkphp异常捕获

$_POST['image'] = $uploadList[0]['savename'];

}

$model = M('Photo');

//保存当前数据对象

$data['image'] = $_POST['image'];

$data['create_time'] = NOW_TIME;

$list = $model-add($data);

if ($list !== false) {

$this-success('上传图片成功!');

} else {

$this-error('上传图片失败!');

}

}

}

?

thinkphp 中有几个exception类

因为APP::exec()中直接通过try{}catch(ReflectionException $e){}捕获控制器执行过程中所有的ReflectionException异常,并调用__call方法,导致一个问题:-thinkphp异常捕获

自己项目中用到反射的时候,很多方法默认是会抛出异常的,比如:

ReflectionClass::implementsInterface($interface)方法,如果$interface不存在的话,内部会直接抛出一个异常,这时候期待的应该是程序中断,但是由于App类的处理机制,导致程序无法中断,而是直接输出视图。-thinkphp异常捕获