gpt4 book ai didi

PHP 异常 - 我有正确的想法吗?

转载 作者:行者123 更新时间:2023-12-04 06:47:11 24 4
gpt4 key购买 nike

我试图了解 PHP 中异常的使用.. 它们如何工作以及何时使用它们... 下面的基本结构是正确的方法.. 对我来说似乎有些臃肿?

在此先感谢您的任何建议或帮助..

<?php

class APIException extends Exception
{
public function __construct($message)
{
parent::__construct($message, 0);
}

public function __toString()
{
echo('Error: ' . parent::getMessage());
}

public function __toDeath()
{
die("Oops: ". parent::getMessage());
}
}

?>

<?php

require_once('exception.class.php');

class auth extends base
{
/*
* User functions
*/

public function user_create($args='')
{
try
{
if ( !isset($arg['username']) || !isset($arg['password']) ||
!isset($arg['question']) || !isset($arg['answer']) )
{
throw new APIException('missing variables, try again');
}
}
catch (APIException $e)
{
$e->__toString();
}

try
{
if ( $this->user_exists() )
{
throw new APIException('user already exists');
}
}
catch (APIException $e)
{
$e->__toString();
}
}

protected function user_exists($name)
{
// Do SQL Query
try
{
$sql = "select * from user where username='$user'";
if (!mysql_query($sql))
{
throw new APIException('SQL ERROR');
}
}
catch (APIException $e)
{
$e->__toDeath();
}
}
}

?>

最佳答案

不,您没有正确使用它们。看看这个

public function user_create($args='')
{
try
{
if ( !isset($arg['username']) || !isset($arg['password']) ||
!isset($arg['question']) || !isset($arg['answer']) )
{
throw new APIException('missing variables, try again');
}
}
catch (APIException $e)
{
$e->__toString();
}
//snip...


当您 throw new APIException('missing variables, try again'); ,它会被 catch (APIException $e) 捕获.

异常(exception)的要点之一是,您可以告诉调用函数的代码出现问题。更正确的用法可能看起来像这样。

public function user_create($args='')
{
if ( !isset($arg['username']) || !isset($arg['password']) ||
!isset($arg['question']) || !isset($arg['answer']) )
{
throw new APIException('missing variables, try again');
}
//snip...

// elsewhere
try {
$foo->user_create('bar');
} catch(APIException $e) {
// handle error here
// log_error($e->getCode(), $e->getMessage());
}

请注意,您在调用 user_create 时使用了 try/catch 块。不在 user_create 内。

关于PHP 异常 - 我有正确的想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3577034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com