RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-298863

Roman Andreev's questions

Martin Hope
Roman Andreev
Asked: 2020-09-27 12:37:59 +0000 UTC

如何修改sql查询?

  • -1
CREATE TABLE Emp ( 
  DEPTNO Int,
  SALARY Int,
  Name varchar(255)
);
INSERT INTO Emp values (10, 5000, 'KING');
INSERT INTO Emp values (30, 4000, 'BLAKE');
INSERT INTO Emp values (10, 2000, 'CLARK');
INSERT INTO Emp values (20, 2000, 'JONES');
INSERT INTO Emp values (20, 3000, 'SCOTT');
INSERT INTO Emp values (20, 3000, 'FORD');
INSERT INTO Emp values (20, 1000, 'SMITH');

有要求

SELECT max(salary), deptno, count(*) FROM Emp
GROUP BY Deptno

其中打印出部门编号、最高工资和部门人数。
如何修改查询,使显示的不是部门总人数,而是该部门领取最高工资的人数?

http://sqlfiddle.com/#!9/ab1910/4

mysql
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-04-27 14:25:43 +0000 UTC

帮助识别错误并正确规定路线

  • 0

所以有Oracle VM VirtualBox。它安装了 2 个虚拟机: Win XP带有两个网络适配器:

  1. Host-only Adapter. 姓名:vboxnet0
  2. Internal Network. 姓名:my lan

配置了以下win xpLAN 连接: Host-only Adapter- 192.168.1.1/24 Internal Network- 192.168.2.1/24

Win Server 2003使用一个网络适配器:

  1. Internal Network. 姓名:my lan

win server连接配置为Internal Network- 192.168.2.10/24 。默认网关:192.168.2.1

所有这些都在装有 Linux Mint 的物理机器上运行。
网络上的这台物理机vboxnet0有以下设置:

vboxnet0  Link encap:Ethernet  HWaddr 0a:00:27:00:00:00  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:489 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:69301 (69.3 KB)

任务是在具有Windows Xp. 在我的机器上,Win Xp我规定了以下路线:

route add 192.168.2.0 mask 255.255.255.0 192.168.2.1
route add 192.168.1.0 mask 255.255.255.0 192.168.1.1

这是该命令的结果在route具有win xp. 路由表

在物理机上,我写了以下路由:

route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.0

route这是命令的结果在物理机器上的样子:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         dir-300         0.0.0.0         UG    100    0        0 enp2s0
link-local      *               255.255.0.0     U     1000   0        0 enp2s0
172.17.0.0      *               255.255.0.0     U     0      0        0 docker0
172.18.0.0      *               255.255.0.0     U     0      0        0 br-2ca568140112
192.168.0.0     *               255.255.255.0   U     100    0        0 enp2s0
192.168.1.0     *               255.255.255.0   U     0      0        0 vboxnet0
192.168.2.0     192.168.1.1     255.255.255.0   UG    0      0        0 vboxnet0

问题是地址 192.168.2.1 和 192.168.1.1 是从物理机 ping 的,但地址 192.168.2.10 不是 :(

сеть
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-03-18 13:59:42 +0000 UTC

如何解决作曲家中的依赖关系

  • 0

有一个原始扩展名wbraganca/yii2-dynamicform。链接到composer.json。
有一个叉子,其中修复了一些错误spiro-stathakis/yii2-dynamicform。链接到composer.json

我的项目中有一个扩展,其依赖项中有“wbraganca/yii2-dynamicform”:“dev-master”

在composer.json项目中,我连接spiro-stathakis/yii2-dynamicform并指定存储库的链接。结果,下载了两个扩展(原始和分叉),但在项目中使用了原始版本。

如何制作以便使用叉子?

composer
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-02-26 03:29:13 +0000 UTC

构建一个包含崩溃\剧透的嵌套集合树

  • 0

该数据库有一个嵌套集数据结构和一个使用 yii2/ 的项目,您需要将此结构显示为嵌套Collapse。

这是按 RGT 排序的结构的样子: 按 rgt 排序的嵌套集

结果应如下所示:

-*spoiler*  
--*spoiler*  
--*spoiler*  
----*spoiler*  
-*spoiler*  
--*spoiler*   
----*spoiler*  
-*spoiler*   
-*spoiler*   
-*spoiler*   
-*spoiler*   
-*spoiler*   
-*spoiler*  
-*spoiler*  
--*spoiler*   
-*spoiler* 

添加扰流板如下。这是一个 yii2 小部件,它返回扰流板的布局,已经应用了样式并放置id了将执行 js-fold-expand 的样式:

private static function createCollapse($label, $content)
{
    return Collapse::widget(
        [
            'items' => [
                [
                    //В таблице поле LABEL
                    'label' => $label,
                    //В качестве контента ID записи
                    'content' => $content
                ]
            ]
        ]
    );
}

布局看起来像这样:

<div class="panel panel-default">
    <div class="panel-heading">
        <h4 class="panel-title"><a class="collapse-toggle collapsed" href="#w7-collapse7" data-toggle="collapse" data-parent="#w7" aria-expanded="false">Main Spoiler</a></h4>
    </div>
    <div id="w7-collapse7" class="panel-collapse collapse" aria-expanded="false" style="height: 0px;">
        <div class="panel-body">
            <div id="w6" class="panel-group collapse in" aria-expanded="true" style="">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h4 class="panel-title"><a class="collapse-toggle collapsed" href="#w6-collapse1" data-toggle="collapse" data-parent="#w6" aria-expanded="false">Sub spoiler</a></h4>
                    </div>
                    <div id="w6-collapse1" class="panel-collapse collapse" aria-expanded="false" style="height: 0px;">
                        <div class="panel-body">
                            content
                        </div>
                    </div>
                </div>
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h4 class="panel-title"><a class="collapse-toggle collapsed" href="#w6-collapse2" data-toggle="collapse" data-parent="#w6" aria-expanded="false">Sub Spoiler</a></h4>
                    </div>
                    <div id="w6-collapse2" class="panel-collapse collapse" aria-expanded="false" style="height: 0px;">
                        <div class="panel-body">
                            content
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

据我了解,简单地从根目录遍历所有子项是行不通的,因为每个顶级扰流器小部件都必须已经知道它的内容,而这些内容又可以包含无限数量的相同扰流器小部件,依此类推。 .

一种解决方案是在一次查询中获取按 RGT 排序的表,并检查当前 LVL 的 3 种情况 - 大于\小于\等于 -使用<ul><li>. 但是我不能以任何方式调整这个例子来使用一个小部件:(

第二个选项,正如@fedornabilkin 所建议的那样,但nested sets不要自行存储parent id,而且再次包装有困难Collapse::widget

我会很高兴有任何帮助!

php
  • 2 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-02-19 17:38:10 +0000 UTC

哪个选择器在性能方面是最佳的?

  • 0

这些过程中哪一个是资源密集型的?

var content = $('.kb-content');
content.each(function () {
    if ($(this).data('parent-id') === targetId) {
        $(this).toggleClass('hidden');
    }
});

或者

$('.kb-content[data-parent-id="' + targetId +'"]').toggleClass('hidden');
javascript
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-01-30 15:04:19 +0000 UTC

如何在 React 中使用物化?

  • 0

很可能,我的问题太新手了,但是谷歌搜索却找不到答案。

我刚开始学习React,当然,我想用它来时尚时尚的青春materialize。简要研究了入门ma​​terializecss (是的,是的,这对我来说也是一个新事物,在此之前我只使用Bootstrap+ jQuery),我意识到它使用materialize相同的交互效果。 bootstrapjQuery

直到我开始用拐杖设计自行车,并且对它的工作原理的理解React还没有发展起来,我问你,告诉我如何正确地交朋友React和Materialize?

reactjs
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-01-28 13:53:41 +0000 UTC

设计应用程序的最佳方式是什么?

  • 2

该应用程序是一个从不同来源收集相同类型数据的解析器。
也就是说,应用程序的主要实体将始终具有相同的方法和属性。只有需要解析此数据的来源会有所不同。
应用程序本身必须作为 API 实现。
从客户端,将收到请求以从特定来源获取列表,可能是在特定来源中的搜索。
我看到的第一个问题是要解析的数据非常不稳定。那些。如果明天其中一个来源的布局发生变化,一切都会中断,您将需要编辑代码。因此,该提议应该易于维护。目前我有两个想法:

  1. 实现一个抽象类,在其中描述实体+搜索数据的抽象方法。从该类继承所有其他类并描述每个单独源的搜索方法
  2. 单独实现一个类,该类将使用与业务逻辑相关的方法来描述实体,并为每个源单独实现存储库类。就像它在交响乐中的实现方式一样。

哪种方法更好?也许还有一些我不知道的其他概念?

архитектура
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-01-14 21:58:13 +0000 UTC

在功能完成后严格执行某个动作

  • 0

有以下代码:

$(document).ready(function() {
    //some code...
    func(elementId);
    var element = document.getElementById(elementId);
    element.scrollIntoView();
});

function func(elementId) {
    var element = $('#' + elementId);
    var parents = element.parents('.panel-collapse');
    $.each(parents, function (key, object) {
        //some code...
    });
}

任务是在功能完成后将func屏幕滚动到所需的元素。据我了解,在这个版本中,代码是异步执行的。那些。不要等待函数完成,它会func 继续下一步。

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-12-18 17:26:23 +0000 UTC

创建仅包含必填字段的 FormData 对象

  • 0

我有一个带有字段的表单:

<form id="form-id">
Логин: <br>
<input name="login" type="text"/>
Пароль: <br>
<input name="pd" type="password"/>
<input type="submit" name="enter" value="Вход" />
</form>

有必要用ajax发送某些表单字段(为了清楚起见,我带来了表单,实际上表单要复杂得多)。

FormData()是否可以通过仅使用表单中的必要字段填充它来在 js 端创建一个对象?
或者,比方说,用一个完整的表单填充对象,例如,FormData(form)但是如何从对象中只选择那些需要发送的字段?

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-11-14 16:08:37 +0000 UTC

跟随链接时如何打开折叠?

  • 1

Yii2 中的项目。
有以下链接:

<?= Html::a(
    'Button',
    [
        'controller/action',
    ],
    ['class' => 'btn btn-primary']
) ?>

在进行过渡的页面上,除了主要内容外,还包含yii\bootstrap\Collapse::widget:

<?= Collapse::widget([
    'items' => [
        [
            'label' => 'Label1',
            'content' => $this->render('1'),
        ],
        [
            'label' => 'Label2',
            'content' => $this->render('2'),
        ],
    ]
]); ?>

如何确保当我单击链接时,会自动显示第一个展开的选项卡Collapse?

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-09-27 16:53:18 +0000 UTC

PHP 中的反射 API 是什么?实际使用

  • 0

阅读 Koterov 的书“PHP 7 in the original”了解了反射 API。反射的工作原理是以一种非常容易理解和理解的方式编写的。但是,没有一个活生生的例子可以在实践中使用。到目前为止,我为自己注意到的唯一实际好处是文档的生成。但毕竟,这个机制不仅仅是为了这个而创建的,不是吗?
作为一个有相当多工作经验的大三学生,我对用什么案例反思解决工作问题很感兴趣?我想要真实的,活生生的例子。

php
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-09-04 15:27:32 +0000 UTC

在不更改 DateTime 对象本身的情况下将日期添加到日期

  • 0

任务如下:您需要将开始日期和结束日期写入数组。一定数量的元素可以具有相同的结束日期和开始日期(变量对此负责$condition)。一旦此类元素的数量等于$condition,下一个元素的开始日期就会移动$countDays。该变量$from最初存储对象DateTime- 初始参考点。

问题是我modify两次应用于对象,并且在这两种情况下对象都被更改。但是我需要这样做,在第一个条件下,写入日期超过一天的$data[$key]['end']对象,但对象本身不会改变。并且已经在第二个条件下,对象应该改变,并且已经在下一次迭代中,它应该相对于改变的对象添加。DateTime$duration$duration

在第一种情况下可以更换什么modify,以免改变对象$from?

$j = 0;
foreach ($array as $key => $value) {
    $duration = self::getDuration($value);
            if ($duration) {
                $data[$key]['begin'] = $from;
                $data[$key]['end'] = $from->modify('+' . $duration . ' day');
                $j++;
                if ($j >= $condition) {
                    $from->modify('+' . $countDays . ' day');
                    $j = 0;
                }
            }
        }
php
  • 2 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-08-07 04:04:57 +0000 UTC

为什么 apache2 在浏览器而不是 nginx 中打开?

  • 0

我使用 vagrant 在虚拟机上安装 ubuntu-18.04。

vagrantfile 的内容

Vagrant.configure("2") do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.synced_folder "C:/vagrant/projects", "/var/www"
end

我把nginx、php、mysql放在同一个虚拟机上。apache2 在自动加载中被禁用。这是它显示的内容systemctl status nginx

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   <b>Active: active (running) </b>since Mon 2018-08-06 19:55:03 UTC; 5min ago
     Docs: man:nginx(8)
  Process: 1519 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/ngin
  Process: 1528 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/
  Process: 1523 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited,
 Main PID: 1531 (nginx)
    Tasks: 2 (limit: 1135)
   CGroup: /system.slice/nginx.service
           ├─1531 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─1533 nginx: worker process

为什么当我在浏览器中打开 localhost:8080 时,我看到的是标准的 apache2 存根而不是预期的 nginx hello?如何解决?

这是我第一次这样做,所以请理解并原谅:)

更新:内容/etc/nginx/sites-enabled/default:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
ubuntu
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-08-03 04:35:02 +0000 UTC

Codeception 发誓什么以及如何解决它?

  • 0

我安装了一个新项目 yii2 - 高级,我还没有真正改变项目中的任何内容,即 几乎所有的设置都是默认的。运行 codeception 时,它提供以下内容:

session_set_cookie_params(): Cannot change session cookie parameters when headers already sent
 /app/vendor/yiisoft/yii2/web/Session.php:388
 /app/vendor/yiisoft/yii2/web/Session.php:135
 /app/vendor/yiisoft/yii2/web/Session.php:635
 /app/vendor/yiisoft/yii2/web/User.php:653
 /app/vendor/yiisoft/yii2/web/User.php:252
 /app/common/models/LoginForm.php:59
 /app/common/tests/unit/models/LoginFormTest.php:63
 /app/vendor/symfony/console/Application.php:262
 /app/vendor/symfony/console/Application.php:145
 /home/vagrant/.phpstorm_helpers/codeception.php:40

我无法弄清楚这意味着什么以及错误来自哪里?也许这与我的测试是从虚拟机运行的事实有某种联系?

php
  • 2 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-07-29 23:47:30 +0000 UTC

Vagrant up 给出了无效的参数错误

  • 0

当我尝试流浪时,我收到以下消息:

C:/HashiCorp/Vagrant/embedded/gems/2.1.2/gems/vagrant-2.1.2/bin/vagrant:47:in `[]=': Invalid argument - ruby_setenv(VAGRANT_NO_PLUGINS) (E
        from C:/HashiCorp/Vagrant/embedded/gems/2.1.2/gems/vagrant-2.1.2/bin/vagrant:47:in `block in <main>'
        from C:/HashiCorp/Vagrant/embedded/gems/2.1.2/gems/vagrant-2.1.2/bin/vagrant:36:in `each_index'
        from C:/HashiCorp/Vagrant/embedded/gems/2.1.2/gems/vagrant-2.1.2/bin/vagrant:36:in `<main>'

Windows 7 x64,Vagrant 2.1.2,虚拟框 5.2.16

如何治愈?

vagrant
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-07-09 15:31:13 +0000 UTC

重新安装 WAMP 时编码消失。怎么修?

  • 0

我不得不在我的电脑上重新安装操作系统,所以我不得不重新安装 WAMP。我从 github 克隆了项目存储库,将数据库转储输入 MySQL,现在我的站点显示问号而不是俄语字符(我的数据库中的一切都很好)。不过,在重新安装之前一切正常。在 MySQL 中,编码是 utf8 - 默认排序规则 我该如何解决这个问题?

php
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-07-04 22:58:00 +0000 UTC

如何在项目中正确配置路由?

  • 0

我在不使用框架的情况下从头开始编写我的小学习项目。不幸的是,我找不到任何关于如何正确配置路由的明确信息。

原则上,与预期的行为 - 一切正常。
但是,例如,如果它直接访问 index.php 文件,则会发生错误(就像任何其他 php 文件一样)。如果您访问一个文件夹,那么您也可以访问它,这意味着已经可以看到项目结构。
即使只是在地址行中写入随机字符,路由器也会尝试执行相应的方法。

我想摆脱这些缺点,以便在访问路径中不存在或未指定的文件时,将文件夹转移到例如主页。

下面我附上路由器、路由和.htaccess的内容。

路线.php:

return array(
    'ajax/delFile/([0-9]+)' => 'ajax/delFile/$1',
    'ajax/delMessage/([0-9]+)' => 'ajax/delMessage/$1',
    'ajax/addPost/([0-9]+)' => 'ajax/addPost/$1',
    'ajax/addPost' => 'ajax/addPost',
    'editMessage/([0-9]+)' => 'message/editMessage/$1',
    'message/search' => 'message/searchMessage',
    'logout' => 'logout/logout',
    'ajax/register' => 'ajax/registerUser',
    'ajax/login' => 'ajax/loginUser',
    'sign-up' => 'signup/show',
    'message/([0-9]+)' => 'message/show/$1',
    '' => 'index/showAllMessages',
);

路由器:

class Router
{
    private  $routes;

    public function __construct()
    {
        $routesPath = __DIR__ . '/../../App/Config/routes.php';
        $this->routes = require_once ($routesPath);
    }

    /**
     * Получаем строку запроса
     *
     * @return bool|string Строка запроса, либо false если строка запроса отсутствует
     */
    private function getURI()
    {
        if (!empty($_SERVER['REQUEST_URI'])) {
            return trim(str_replace('mvcguestbook', '', $_SERVER['REQUEST_URI']), '/');
        } else {
            return false;
        }
    }


    public function run()
    {
        $uri = $this->getURI();

        //Проверяем наличие запроса в routes.php
        foreach ($this->routes as $uriPattern => $path) {

            //Ищем в URI совпадение с регулярным выражением uriPattern
            if(preg_match("~$uriPattern~i", $uri)) {

                //Формируем из URI внутренний маршрут
                $internalRoute = preg_replace("~$uriPattern~i", $path, $uri);

                //Определяем контроллер, экшн и параметры
                $segments = explode('/', $internalRoute);

                $controllerName = 'App\\Controllers\\' . ucfirst(array_shift($segments) . 'Controller');
                $actionName = 'action'. ucfirst(array_shift($segments));

                $controllerObject = new $controllerName;
                $result = $controllerObject->$actionName($segments);
                if ($result != null) {
                    break;
                }
            }
        }
    }
}

.ht 访问:

AddDefaultCharset utf-8

RewriteEngine on
RewriteBase /mvcguestbook
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php
php
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-07-02 17:56:56 +0000 UTC

如何将操作应用于具有给定 id 的所有元素,而不仅仅是第一个?[复制]

  • -1
这个问题已经在这里得到了回答:
脚本仅适用于一个 id (2个答案)
4年前关闭。

我有很多元素id="btnDelMessage" 问题是该按钮仅适用于页面上的第一个元素,其余元素没有任何反应。怎么修?

html:

<button id="btnDelMessage" value="$id" class="btn btn-sm far fa-trash-alt mr-2"></button>

js:

$('#btnDelMessage').on('click', function (e) {
        var id = this.value;
        var message = 'Вы действительно хотите удалить сообщение?
        confirmDialog(message, function () {
            //some code
            console.log('Удаляется сообщение: ' + id);
        })
    });

    function confirmDialog(message, onConfirm){
        var fClose = function(){
            modal.modal("hide");
        };
        var modal = $("#modalDelMessage");
        modal.modal("show");
        $("#delMessageText").empty().append(message);
        $("#delMessageOk").one('click', onConfirm);
        $("#delMessageOk").one('click', fClose);
        $("#delMessageCancel").one("click", fClose);
    }
javascript
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-07-01 05:35:15 +0000 UTC

如果代码在提交前中止,事务是否会在 PDO 中回滚?

  • 1

如果代码在该点之前被中断commit,事务是否会回滚,前提是我没有明确指定rollBack?还是RollBack您需要注册所有区块catch?

try {
    $dbh->beginTransaction();
    $db->query($firstQuery);
    $db->someMethod(); //тут вылетает исключение
    //some code
    $dbh->commit();
} catch (PDOException $e) {
    echo 'Ошибка БД';
} catch (Exception $e) {
    echo 'Упссс, ошибочка';
}
php
  • 1 个回答
  • 10 Views
Martin Hope
Roman Andreev
Asked: 2020-07-01 04:47:50 +0000 UTC

创建我们自己的异常类来捕获各种错误是一种好习惯吗?

  • 5

我最近刚刚学习了异常的机制,现在我正在掌握它们。这里有几个关于它们使用的问题:

是否可以创建自己的空 Exception 类继承自 Exception 类,只是为了有一个单独的异常名称?例如:我正在处理文件,如果文件无法加载文件 - 我会抛出异常

 throw new FileException('Не удалось загрузить файл') 

`FileException 类本身不包含任何内容

class FileException extends \Exception
{
    //empty!
}

第二个问题,从第一个问题开始。我这样做是为了捕捉各种错误。例如,在网站上添加消息时,我可能会得到不同的异常,例如:错误消息、上传文件失败、PDO 错误。也就是说,在控制器中它将如下所示:

public function actionMethod()
{
    try {
        //some code;
    } catch (FileException $e) {
        echo 'С файлами что то пошло не так:' . $e->getMessage();
    } catch (MessageException $e) {
        echo 'С сообщением что то пошло не так:' . $e->getMessage();
    } catch (PDOException $e) {
        echo 'С БД что то пошло не так:' . $e->getMessage();
    } catch (Exception $e) {
        echo 'Что то совсем пошло не так :(';
    }
}

有可能这样做吗?控制器有这么多catch是正常的吗?这种做法有多好?或者我误解了异常是如何工作的?

php
  • 2 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5