[#119637] Behavior of raising from rescue blocks when multiple rescue blocks exist — Rodrigo Rosenfeld Rosas via ruby-core <ruby-core@...>
Hello, I couldn't find any documentation about the subject, so I thought
3 messages
2024/10/29
[ruby-core:119474] [Ruby master Feature#20786] Flow chaining with "then" keyword
From:
lpogic via ruby-core <ruby-core@...>
Date:
2024-10-07 09:39:16 UTC
List:
ruby-core #119474
SXNzdWUgIzIwNzg2IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbHBvZ2ljICjFgXVrYXN6IFBvbWlldMWC bykuDQoNCg0KWW91J3JlIHJpZ2h0LiBUaGF0cyB3aHkgSSBwcm9wb3NlZCB0byBldmFsdWF0ZSBy aHMgY29uZGl0aW9uYWxseS4NClRoZSBjYW5vbmljYWwgZm9ybSBoYXMgYSBjbGVhciAqYmVnaW5u aW5nKiBhbmQgKmVuZCosIHNvIEkgYXNzdW1lIHlvdXIgY29tbWVudCByZWZlcnMgdG8gdGhlIGJl Z2lubmluZ2xlc3MgZm9ybS4gTGV0J3MgbG9vayB0aGUgZm9sbG93aW5nIGV4YW1wbGU6DQpgYGAg cnVieQ0KZm9vIHRoZW4gYmFyIGVuZA0KYGBgDQpUaGUgImJhciIgaXMgZXZhbHVhdGVkIG9ubHkg aWYgImZvbyIgaXMgdHJ1ZSwgc28gaXQgZG9lcyBxdWlldCB0aGUgc2FtZSB3aGF0Og0KYGBgIHJ1 YnkNCmlmIGZvbyB0aGVuIGJhciBlbmQNCmBgYA0KZG9lcyAoZXhjZXB0IHRoYXQgZmlyc3QgZm9y bSByZXN1bHQgaXMgKiJmYWxzZSIqIGlmICoiZm9vIiogcmV0dXJucyAqImZhbHNlIiopLg0KDQpB bm90aGVyIGV4YW1wbGVzOg0KYGBgIHJ1YnkNCiMgY2hhaW5lZCBmbG93IGluIGNvbmRpdGlvbjoN CmlmIChmb28gdGhlbiBiYXogZW5kKSB0aGVuDQogIGJhcg0KZW5kDQoNCiMgY2hhaW5lZCBmbG93 IGluIHN0YXRlbWVudDoNCmlmIGZvbw0KICBiYXIgdGhlbiBiYXogZW5kICAjIHBsZWFzZSBub3Rl IHRoYXQgaW4gdGhlIGJlZ2lubGVzcyBmb3JtIHRoZSBleHByZXNzaW9uIGlzIHJlcXVpcmVkIG9u IHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGZpcnN0ICJ0aGVuIg0KZW5kDQpgYGANCg0KSSB0aGluayB0 aGUgbW9zdCBxdWVzdGlvbmFibGUgY2FzZSBpcyB0aGlzOg0KYGBgIHJ1YnkNCmlmIGZvbyB0aGVu IGJhciB0aGVuIGJheiBlbmQgZW5kDQpgYGANClNvIEkgc2VlIDIgc29sdXRpb25zOg0KMSkgSWYg ImlmIiBpcyB1c2VkLCB0aGUgZmlyc3QgInRoZW4iIGJlbG9uZ3MgdG8gYW5vdGhlciBmbG93LCBz byB0aGUgY2FzZSBpcyB0aGUgc2FtZSBhcyBvbmUgYWJvdmUuDQoyKSAiaWYiIGNhbiBhbHNvIGJl IGRpdmlkZWQgaW50byBzdGVwcywgc28gdGhlIGNhc2UgaXMgYXMgZm9sbG93czoNCmBgYCBydWJ5 DQppZiBmb28NCnRoZW4NCiAgYmFyDQp0aGVuDQogIGJheg0KZW5kICMgcGxlYXNlIG5vdGUgdGhh dCB0aGUgc2Vjb25kICJlbmQiIGhhcyBiZWVuIHJlbW92ZWQNCmBgYA0KSSdtIG5vdCBzdXJlIHdo aWNoIG9uZSB3b3VsZCBiZSBiZXR0ZXIuIEluIGFueSBjYXNlLCB0aGUgY2hhaW4gZmxvdyB3b3Vs ZCBhbGxvdyBmb3IgYSBub3RhdGlvbiBsaWtlIHRoaXM6DQpgYGAgcnVieQ0KYmVnaW4NCiAgZm9v DQp0aGVuDQogIGJhcg0KdGhlbg0KICBiYXoNCiAgcmVhZHk/DQp0aGVuDQogIHAgIm9rIg0KZW5k DQpgYGANCmluc3RlYWQgb2YgdGhpczoNCmBgYCBydWJ5DQppZiBmb28NCiAgaWYgYmFyDQogICAg YmF6DQogICAgaWYgcmVhZHk/DQogICAgICBwICJvayINCiAgICBlbmQNCiAgZW5kDQplbmQNCmBg YA0KDQpUaGVyZSBpcyBhbHNvIHRoZSBpc3N1ZSBvZiB0aGUgImVsc2UiIGJyYW5jaC4gQ2FuIGJl IGFuIGFsdGVybmF0aXZlIHBhdGggZm9yIHRoZSBsYXN0ICJ0aGVuIiBicmFuY2ggb3IgZm9yIGFs bDoNCmBgYCBydWJ5DQojIHRoZSBjYXNlOg0KaWYgZm9vDQp0aGVuIGJhcg0KdGhlbg0KICBiYXoN CiAgcmVhZHk/DQp0aGVuIHAgIm9rIg0KZWxzZSBwICJmYWlsIg0KZW5kDQoNCiMgImVsc2UiIGFz IGFuIGFsdGVybmF0aXZlIHRvIHRoZSBsYXN0IGJyYW5jaDoNCmlmIGZvbw0KICBpZiBiYXINCiAg ICBiYXoNCiAgICBpZiByZWFkeT8NCiAgICAgIHAgIm9rIg0KICAgIGVsc2UNCiAgICAgIHAgImZh aWwiDQogICAgZW5kDQogIGVuZA0KZW5kDQoNCiMgImVsc2UiIGFzIGFuIGFsdGVybmF0aXZlIHRv IGFsbCBicmFuY2hlczoNCmlmIGZvbw0KICBpZiBiYXINCiAgICBiYXoNCiAgICBpZiByZWFkeT8N CiAgICAgIHAgIm9rIg0KICAgIGVsc2UNCiAgICAgIHAgImZhaWwiDQogICAgZW5kDQogIGVsc2Ug DQogICAgcCAiZmFpbCINCiAgZW5kDQplbHNlDQogIHAgImZhaWwiDQplbmQNCmBgYA0KDQoNCkZp bmFsbHksIEknbSBub3Qgc3VyZSBpZiAidGhlbiIgcmhzIHNob3VsZCBiZSBldmFsdWF0ZWQgY29u ZGl0aW9uYWxseSwgYXMgdGhpcyBjb3VsZCBzb21ldGltZXMgY2F1c2UgcHJvYmxlbXMgaW4gYXBw bGljYXRpb25zIGxpa2UgdGhlIHBpcGVsaW5lIG9wZXJhdG9yLiBNYXliZSB1c2UgYSBkaWZmZXJl bnQga2V5d29yZCBmb3IgY29uZGl0aW9uYWxpdHksIGUuZy4gImFuZHRoZW4iPyBJIGJlbGlldmUg aXQgc2hvdWxkIGJlIGNhcmVmdWxseSBhbmFseXplZC4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMjA3ODY6IEZsb3cgY2hhaW5pbmcgd2l0aCAi dGhlbiIga2V5d29yZA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIwNzg2I2No YW5nZS0xMTAwOTENCg0KKiBBdXRob3I6IGxwb2dpYyAoxYF1a2FzeiBQb21pZXTFgm8pDQoqIFN0 YXR1czogT3Blbg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KSGks DQpJIHdvdWxkIGxpa2UgdG8gcHJvcG9zZSB1c2luZyB0aGUgKiJ0aGVuIioga2V5d29yZCB0byBj cmVhdGUgY2hhaW5lZCBmbG93cy4NCg0KIyMjIEJhY2tncm91bmQ6DQpPcmlnaW5hbCBpZGVhOiBo dHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMjA3NzAjY2hhbmdlLTExMDA1Ng0KSG93 ZXZlciwgdGhlIGNvbmNlcHQgaGFzIGNoYW5nZWQgc2xpZ2h0bHkgc2luY2UgdGhlbi4gSSBub3cg YXNzdW1lIHRoYXQgcmhzIGlzIG9ubHkgY2FsY3VsYXRlZCB3aGVuIGxocyBpcyB0cnVlLCB3aGlj aCBzZWVtcyBtb3JlIGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCB1c2FnZSBvZiAqInRoZW4i KiBrZXl3b3JkLg0KSSB3b3VsZCBhbHNvIGxpa2UgdG8gbW92ZSB0aGUgZGlzY3Vzc2lvbiBoZXJl IGFzIGl0IG1heSBjYXVzZSB1bm5lY2Vzc2FyeSBjaGFvcyB0aGVyZS4NCg0KIyMjIEJhc2ljczoN CkluIHRoZSBjYW5vbmljYWwgdmVyc2lvbiwgKiJ0aGVuIiogaXMgdXNlZCBpbiBhICoiYmVnaW4u LmVuZCIqIGJsb2NrIHRvIHNwbGl0IGl0IGludG8gc3RlcHMuDQpXaGVuIHRoZSByZXN1bHQgb2Yg dGhlIGxhc3QgZXhwcmVzc2lvbiBiZWZvcmUgKiJ0aGVuIiogaXMgbm90ICoiZmFsc2UiKiBvciAq Im5pbCIqLCBpdCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlIG5leHQgc3RlcC4gT3Ro ZXJ3aXNlLCBhbGwgc3Vic2VxdWVudCBzdGVwcyBhcmUgc2tpcHBlZC4NClRoZSByZXN1bHQgb2Yg dGhlICoiYmVnaW4uLmVuZCIqIGJsb2NrIGlzIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgZXhwcmVz c2lvbiwgb3IgKiJmYWxzZSIqLyoibmlsIiogaWYgYW55IHN0ZXAgd2FzIHNraXBwZWQuDQoNCiMj IyBFeGFtcGxlOg0KYGBgIHJ1YnkNCiMgb3JpZ2luYWwgY29kZSBzb3VyY2U6IGh0dHBzOi8vZ2l0 aHViLmNvbS9ydWJ5L3J1YnkvYmxvYi9hNjM4M2ZiZTE2MjhiZGFhOWVjNmEzMGIzYmFhNjBkZDc0 MzBiNDYxL2xpYi9pcGFkZHIucmIjTDE4MUMxLUwxODVDNg0KZGVmIGluY2x1ZGU/KG90aGVyKQ0K ICBvdGhlciA9IGNvZXJjZV9vdGhlcihvdGhlcikNCiAgcmV0dXJuIGZhbHNlIHVubGVzcyBvdGhl ci5mYW1pbHkgPT0gZmFtaWx5DQogIGJlZ2luX2FkZHIgPD0gb3RoZXIuYmVnaW5fYWRkciAmJiBl bmRfYWRkciA+PSBvdGhlci5lbmRfYWRkcg0KZW5kDQoNCiMgd2l0aCBjaGFpbmVkIGZsb3cNCmRl ZiBpbmNsdWRlPyhvdGhlcikNCiAgYmVnaW4NCiAgICBjb2VyY2Vfb3RoZXIob3RoZXIpDQogIHRo ZW4gPT4gY29lcmNlZCAgIyB0aGVuID0+IG5hbWUgICBpcyBteSBwcm9wb3NpdGlvbiBvZiBhcmd1 bWVudCBuYW1pbmcgc3ludGF4DQogICAgcmV0dXJuIGZhbHNlIHVubGVzcyBjb2VyY2VkLmZhbWls eSA9PSBmYW1pbHkNCiAgICBjb2VyY2VkDQogIHRoZW4gPT4gaXQNCiAgICBiZWdpbl9hZGRyIDw9 IGl0LmJlZ2luX2FkZHIgJiYgZW5kX2FkZHIgPj0gaXQuZW5kX2FkZHINCiAgZW5kDQplbmQNCmBg YA0KDQpQbGVhc2UgdHJlYXQgdGhlIGNhbm9uaWNhbCBmb3JtIGFzIGEgc3RhcnRpbmcgcG9pbnQu IEFzIGZ1cnRoZXIgaW1wcm92ZW1lbnRzIEkgd291bGQgc2VlOg0KLSBpbXBsaWNpdCBibG9jayBh cmd1bWVudCBuYW1lDQotIGltcGxpY2l0IGJlZ2luDQotIGJlZ2lubGVzcyAqInRoZW4iKiwgd2hl biBsaHMgaXMganVzdCBleHByZXNzaW9uDQoNCiMjIyBFeGFtcGxlIHdpdGggZnV0aGVyIGltcHJv dmVtZW50czoNCmBgYCBydWJ5DQpkZWYgaW5jbHVkZT8ob3RoZXIpDQogIGNvZXJjZV9vdGhlcihv dGhlcikNCnRoZW4gDQogIGl0LmZhbWlseSA9PSBmYW1pbHkgPyBpdCA6IGZhbHNlDQp0aGVuDQog IGJlZ2luX2FkZHIgPD0gaXQuYmVnaW5fYWRkciAmJiBlbmRfYWRkciA+PSBpdC5lbmRfYWRkcg0K ZW5kDQoNCiMgb3INCmRlZiBpbmNsdWRlPyhvdGhlcikNCiAgY29lcmNlX290aGVyIG90aGVyIHRo ZW4NCiAgICByZXR1cm4gZmFsc2UgdW5sZXNzIGl0LmZhbWlseSA9PSBmYW1pbHkNCiAgICBiZWdp bl9hZGRyIDw9IGl0LmJlZ2luX2FkZHIgJiYgZW5kX2FkZHIgPj0gaXQuZW5kX2FkZHINCiAgZW5k DQplbmQNCmBgYA0KDQojIyMgKiJ0aGVuIioga2V5d29yZCBhcyB0aGUgcGlwZWxpbmUgb3BlcmF0 b3I6DQpVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsICJ0aGVuIiBjb3VsZCBvZmZlciBzaW1pbGFy IGNhcGFiaWxpdGllcyB0byB0aGUgcGlwZWxpbmUgb3BlcmF0b3Igb2YgZnVuY3Rpb25hbCBsYW5n dWFnZXM6DQpgYGAgcnVieQ0KIyBhc3N1bWluZyB0aGF0ICJmb28iIGFuZCAiYmFyIiBuZXZlciBy ZXR1cm4gImZhbHNlIiBvciAibmlsIg0KIyBpbnN0ZWFkIG9mIHdyaXRpbmcgdGhpczoNCmJheigi c3RyaW5nIiwgYmFyKGZvbygpLCAyKSwgNSkNCiMgeW91IGNvdWxkIHdyaXRlIHRoaXM6DQpiZWdp biBmb28oKSANCnRoZW4gYmFyKGl0LCAyKSANCnRoZW4gYmF6KCJzdHJpbmciLCBpdCwgNSkgDQpl bmQNCmBgYA0KDQoNCg0KDQoNCi0tIA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQogX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogcnVieS1jb3JlIG1h aWxpbmcgbGlzdCAtLSBydWJ5LWNvcmVAbWwucnVieS1sYW5nLm9yZwogVG8gdW5zdWJzY3JpYmUg c2VuZCBhbiBlbWFpbCB0byBydWJ5LWNvcmUtbGVhdmVAbWwucnVieS1sYW5nLm9yZwogcnVieS1j b3JlIGluZm8gLS0gaHR0cHM6Ly9tbC5ydWJ5LWxhbmcub3JnL21haWxtYW4zL2xpc3RzL3J1Ynkt Y29yZS5tbC5ydWJ5LWxhbmcub3JnLw==