رمي استثناء داخل فئة الكائن والتقاطها في الخارج؟

1

ما أحاول القيام به هو استثناء استثناء داخل الفصل.

ومن ثم تكون قادرًا على التقاطها بالخارج عند التنفيذ.

class api {

    public function __construct($user_id, $token) {}

    public function post($data) {
        throw new customException\Post('Error 1');
    }

}

try {

    $api = new api('id','key');
    $output = $api->post($data);

} catch(customException\Post $e) {
    var_dump($e);
} catch(exception $e) {
    var_dump($e);
}

كيف يمكنني الحصول على شيء مثل هذا للعمل؟


لا أستطيع الحصول على customException\Post للعمل هكذا ... لماذا هذا؟

عندما أستخدم customException أحصل على هذا الخطأ:

Uncaught ArgumentCountError: Too few arguments to function api::__construct(), 1 passed in /var/www/.../api_2.3.php on line 81 and exactly 2 expected in /var/www/.../api_2.3.php:28

1 إجابة

1
افضل جواب

إذا كنت لا تستخدم مساحات الأسماء:

<?php
class CustomException_Post extends Exception {}

class api {
    public function __construct($user_id, $token) {}

    public function post($data) {
        throw new CustomException_Post('Error 1');
    }
}

$data = [];
try {
    $api = new api('id','key');
    $output = $api->post($data);
} catch (CustomException_Post $e) {
    var_dump($e);
} catch (Exception $e) {
    var_dump($e);
}

https://3v4l.org/Q196X

إذا كنت كذلك ، فأنت بحاجة إلى برنامج تحميل تلقائي ، بافتراض استخدامك للملحن ، سيبدو شيئًا مثل هذا بعد إضافة إدخال التحميل التلقائي psr4 :

في CustomException مجلد ، ملف يسمى Post.php .

<?php
namespace CustomException;
class Post extends \Exception {}

ثم في الكود الخاص بك يمكنك استخدام:

<?php

use CustomException;

class api {
    public function __construct($user_id, $token) {}

    public function post($data) {
        throw new CustomException\Post('Error 1');
    }
}

$data = [];
try {
    $api = new api('id','key');
    $output = $api->post($data);
} catch (CustomException\Post $e) {
    var_dump($e);
} catch (\Exception $e) {
    var_dump($e);
}
:مؤلف
فوق
قائمة طعام