From: Jeremy Thurgood Date: 2008-02-09T16:09:37+09:00 Subject: Re: Timeout::Error This is a cryptographically signed message in MIME format. --------------ms030609050404000005010205 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Joel VanderWerf wrote: > Jeremy Thurgood wrote: >> Joel VanderWerf wrote: >>> Nobuyoshi Nakada wrote: >>>> Sorry, I can't remember it correctly now. Perhaps, not to >>>> happen to be caught accidentally. >>> That sounds like a good reason: >> Not to me. I would expect catching StandardError (implicitly or >> explicitly) would catch everything I have a reasonable chance of >> recovering from, including timeouts. This is my standard strategy when I >> am not entirely sure what exceptions may be thrown by third-party code. >> There is code in the standard library that throws TimeoutErrors that >> need to be caught explicitly: >> >> require 'open-uri' >> begin >> my_file = open("http://www.example.com/file") >> rescue >> puts "Sorry, I couldn't open the URL." >> end >> >> In this case, everything /except/ a timeout will be caught. This is >> inconsistent and confusing behaviour to me, especially as it is not >> properly documented anywhere that I have seen. > > It not a question of _what_ is recoverable, but _where_ it should be > recovered. A timeout should only be caught at a point where it's expected. And if it's not expected, it should be allowed to crash my application? You could make the same statement about any exception, really. --J -- --------------ms030609050404000005010205 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJaTCC Aw8wggJ4oAMCAQICEDvKk1SqBf0E1mZzHbJoRUwwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UE BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA3MTIwOTE0MjYxNloX DTA4MTIwODE0MjYxNlowczERMA8GA1UEBBMIVGh1cmdvb2QxFzAVBgNVBCoTDkplcmVteSBS aWNoYXJkMSAwHgYDVQQDExdKZXJlbXkgUmljaGFyZCBUaHVyZ29vZDEjMCEGCSqGSIb3DQEJ ARYUamVyaXRoQGplcml0aC56YS5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQDD85piSEhUurBsZehSQXZoctIsKyBx0RfWgqsndQ56eONkijBLKoyBkE8VZo7j5ZZ5T/on uUIgGcNQx2FvwJRECOB8GskLQCF0oPZ918LVYtGIgc45h4McdLsqUU/GRx3v73ccLTpGYpb8 CfFU6N47IQU/ItsgzefQ0lCUbdfRCzLSNGKCXrcOqBzN0fctPwChRFths6OL1THsQsbUGIfi yIhz3O7U7Afb06FaY4T8rQUkON9M5Gp94z5eikSNpC21e7KVj0vMWudQigKFexeKye3rdAYv yfJ4VvRRtm5fjLD8/Jrt9dBNU5+0b399CE0N4ZcXpdu/Y7laXluTNKRRAgMBAAGjMTAvMB8G A1UdEQQYMBaBFGplcml0aEBqZXJpdGguemEubmV0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcN AQEFBQADgYEAZbNewFKDYiJK7C28bfxWUm7EveYrvCHH1iZcsl3bak9Ha0JK57yCUYahUfoa siTBL/m0HkLbAhCEp5tjoTGCWcZVZ5gc0BNE8mUkYTWEKESkXKtk9nayFUHbIS9mrLO/GSHJ zow/BOT0gikPmV43CT6gd8pj9ercq08bby6wMpAwggMPMIICeKADAgECAhA7ypNUqgX9BNZm cx2yaEVMMA0GCSqGSIb3DQEBBQUAMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUg Q29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1h aWwgSXNzdWluZyBDQTAeFw0wNzEyMDkxNDI2MTZaFw0wODEyMDgxNDI2MTZaMHMxETAPBgNV BAQTCFRodXJnb29kMRcwFQYDVQQqEw5KZXJlbXkgUmljaGFyZDEgMB4GA1UEAxMXSmVyZW15 IFJpY2hhcmQgVGh1cmdvb2QxIzAhBgkqhkiG9w0BCQEWFGplcml0aEBqZXJpdGguemEubmV0 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw/OaYkhIVLqwbGXoUkF2aHLSLCsg cdEX1oKrJ3UOenjjZIowSyqMgZBPFWaO4+WWeU/6J7lCIBnDUMdhb8CURAjgfBrJC0AhdKD2 fdfC1WLRiIHOOYeDHHS7KlFPxkcd7+93HC06RmKW/AnxVOjeOyEFPyLbIM3n0NJQlG3X0Qsy 0jRigl63DqgczdH3LT8AoURbYbOji9Ux7ELG1BiH4siIc9zu1OwH29OhWmOE/K0FJDjfTORq feM+XopEjaQttXuylY9LzFrnUIoChXsXisnt63QGL8nyeFb0UbZuX4yw/Pya7fXQTVOftG9/ fQhNDeGXF6Xbv2O5Wl5bkzSkUQIDAQABozEwLzAfBgNVHREEGDAWgRRqZXJpdGhAamVyaXRo LnphLm5ldDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUAA4GBAGWzXsBSg2IiSuwtvG38 VlJuxL3mK7whx9YmXLJd22pPR2tCSue8glGGoVH6GrIkwS/5tB5C2wIQhKebY6ExglnGVWeY HNATRPJlJGE1hChEpFyrZPZ2shVB2yEvZqyzvxkhyc6MPwTk9IIpD5leNwk+oHfKY/Xq3KtP G28usDKQMIIDPzCCAqigAwIBAgIBDTANBgkqhkiG9w0BAQUFADCB0TELMAkGA1UEBhMCWkEx FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFU aGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZp c2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcN AQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29tMB4XDTAzMDcxNzAwMDAwMFoXDTEz MDcxNjIzNTk1OVowYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5n IChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5n IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEpjxVc1X7TrnKmVoeaMB1BHCd3+n/ ox7svc31W/Iadr1/DDph8r9RzgHU5VAKMNcCY1osiRVwjt3J8CuFWqo/cVbLrzwLB+fxH5E2 JCoTzyvV84J3PQO+K/67GD4Hv0CAAmTXp6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZcmC3+wID AQABo4GUMIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDov L2NybC50aGF3dGUuY29tL1RoYXd0ZVBlcnNvbmFsRnJlZW1haWxDQS5jcmwwCwYDVR0PBAQD AgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRlTGFiZWwyLTEzODANBgkqhkiG 9w0BAQUFAAOBgQBIjNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82L8D0HFAg k3A8/a3hYWLD2ToZfoSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowgT2Vfldr394fWxghO rvbqNOUQGls1TXfjViF4gtwhGTXeJLHTHUb/XV9lTzGCA2QwggNgAgEBMHYwYjELMAkGA1UE BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhA7ypNUqgX9BNZmcx2yaEVM MAkGBSsOAwIaBQCgggHDMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkF MQ8XDTA4MDIwOTA3MDkyOVowIwYJKoZIhvcNAQkEMRYEFAa0JQpI8VB2/ghbSSinGjsFsvVS MFIGCSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3 DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGFBgkrBgEEAYI3EAQxeDB2MGIxCzAJ BgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYD VQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQO8qTVKoF/QTWZnMd smhFTDCBhwYLKoZIhvcNAQkQAgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3 dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJl ZW1haWwgSXNzdWluZyBDQQIQO8qTVKoF/QTWZnMdsmhFTDANBgkqhkiG9w0BAQEFAASCAQAN ZqZzfL0AAHJdOGGTZEqAyfVHn8MKU8s2nh1POPtSGj2CGQV5Euxp/bvQGsq62WZQ3nqvk0N/ hyeoO2cuke/9pkM7+P8wBxW2FnmLT+s6H0X2BJK+nnENvarijc99xFg5D8CfGfwRfWkKysMH iBCsGMZfSWkaNgPUMrnuLTdlYTCldJ6wElj9n758NLBYtv1aCq8ZPGJye3866EmnGJJfanrs UyoyL6sJy0bEeYnfZU1NbPKI3x2G8kb1RaodEDIUMWtklrCO1cTDq2mUSU8QLPTCtuuv+crk esBRwpdG9GIm293JgG6AJIbbLRs/iJooxRfsChBUkMXr4nsf39qYAAAAAAAA --------------ms030609050404000005010205--