18
void foo() try {} catch (...) {}
// OK, function-try-block
Lambda için neden işlev bloku yok?
[]() try {} catch (...) {}();
// error: expected ‘{’ before ‘try’
[]() { try {} catch (...) {} }();
// OK, extra curly braces`
Neden ikinci varyant izin verilmez?
Sürüm 1 gerçekten geçerli mi? – JVApen
@JVApen Evet öyle. – DimChtz
@JVApen Bir kurucuyu bir try-catch bloğuna sarmanıza izin vermek amaçlanmıştır; bu, başlangıç sırasında atılan istisnaları yakalayabilecek; Nesne, kurucunun vücudu girdiği zamandan beri başlatıldığı için, vücut dışında try-catch bloğuna girmek için özel bir sözdizimi gereklidir. Bu, programcının normal olarak ele alınacak olan istisnayı geçmeden önce kısmen inşa edilmiş nesneler için gerekli herhangi bir temizlemeyi yapmasına izin verir. [İşlevin içinde bildirilen nesneler, yakalama blok (lar) ının sonuna kadar kapsam olarak kabul edilir.] –