我刚刚开始使用Moose及其一个伟大的OO框架,不仅可以使用,还可以学习新的OO概念.我想做的一件事就是在对象创建期间从调用者的角度进行错误报告.我看到Moose有模块Moose :: Error :: Croak,它告诉Moose通过croak调用覆盖默认的错误报告.我用它但它似乎没有帮助
驼鹿代码 - Foo.pm
package Foo;
use metaclass (
metaclass => 'Moose::Meta::Class',
error_class => 'Moose::Error::Croak',
);
use Moose;
has 'attr1' => (
is => 'rw',
isa => 'Str',
required => '1',
);
no Moose;
1;
Run Code Online (Sandbox Code Playgroud)
驼鹿代码 - fooser.pl
#!/usr/bin/perl
use strict;
use warnings;
use Foo;
my $foobj = Foo->new();
Run Code Online (Sandbox Code Playgroud)
这失败并出现错误:/usr/local/lib/perl/5.8.8/Class/MOP/Class.pm第364行需要属性(attr1)
如果没有使用Moose :: Error :: Croak,它比实际的堆栈跟踪更简洁.但它不会从调用者的角度报告它.如果这是一个Perl 5 OO代码,我将Foo.pm作为:
package Foo;
use strict;
use warnings;
use Carp;
sub new {
my ($class, %args) = @_;
my $self = …
Run Code Online (Sandbox Code Playgroud) 我在 Golang 中创建了一个示例项目:
sampleapp/
sampleapp/main.go
Run Code Online (Sandbox Code Playgroud)
其中有以下代码:
package main
import (
"flag"
"fmt"
)
func main() {
var name = flag.String("name", "user1", "user name")
var age = flag.Int("age", 20, "user age")
fmt.Println(*name)
fmt.Println(*age)
}
Run Code Online (Sandbox Code Playgroud)
我按照https://code.visualstudio.com/docs/editor/debugging并创建了以下 launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch file",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}/main.go",
"env": {},
"args": []
},
{
"name": "Launch exec",
"type": "go",
"request": "launch",
"mode": "exec",
"program": "${workspaceFolder}/sampleapp",
"env": {},
"args": []
}
]
}
Run Code Online (Sandbox Code Playgroud)
当我使用启动文件 …