Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
begin
class Base;
virtual:
procedure Foo is
procedure Foo;
;
begin
procedure Foo;
begin
outtext("Base");
end;
end;
Base class Derived;
begin
procedure Foo;
begin
outtext("Derived");
end;
end;
ref(Base) obj;
obj :- new Base;
obj.Foo;
obj :- new Derived;
obj.Foo;
end
return err, как можно выше. А что кроме этого вас не устраивает? if err != nil {
log.Fatal(err)
}
//или такого
if err != nil {
return nil, err
}
Control.try(func(){
// code
_, err := my.func(); Control.handle(err);
// code
}).cath(func(message err){
// handle
})
if err {return err}, уместно использовать panic и просто отловить проброшенное исключение на верхнем уровне. Почему это будет дорого? Ведь .NET и Java используют именно такую модель обработки ошибок. А каком геморрое вы говорите? И почему это будет не Go-way? Ведь если существуют подобные механизмы языка, значит ими можно пользоваться, но и это не значит что их следует пихать везде, где вздумается. Более того, такой способ используют сами разработчики, например в пакете regexp, вот здесь кратко описано что, где и зачем: Effective Go — RecoverПочему это будет дорого?Товарищ привёл пример кода и о нём говорил, что дорого и муторно.
But what if the error is unrecoverable? Sometimes the program simply cannot continue.
This is only an example but real library functions should avoid panic. If the problem can be masked or worked around, it's always better to let things continue to run rather than taking down the whole program.
Почему это будет дорого? Ведь .NET и Java используют именно такую модель обработки ошибок.
О каком геморрое вы говорите?
И почему это будет не Go-way?
func foo() (err error) {
var v bool
if v1, err = baz(); err == nil {
if v, err = bar(); err == nil {
println("value is", v, v1)
}
}
return
}
Вы можете быть не знакомы со Simula, но, вне всяких сомнений, точно знаете некоторые из тех языков, для которых он стал вдохновением — Java, C++, C# и Smalltalk, которые позже, в свою очередь, сильно повлияли на Objective-C, Python, Ruby, Javascript, Scala, PHP, Perl… полный перечень содержит почти все популярные современные языки.
Является ли Go языком ООП?